国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

zend-framework - Isu konfigurasi fungsi getServiceConfig dalam zend framework2 dan 3
phpcn_u1582
phpcn_u1582 2017-05-16 16:43:14
0
1
737
//Module.php中的一段代碼(項(xiàng)目是zend framework2官網(wǎng)上的簡單例子)
 public function getServiceConfig()
    {
        return array(
            'factories' => array(
                'Album\Model\AlbumTable' =>  function($sm) {
                    $tableGateway = $sm->get('AlbumTableGateway');
                    $table = new AlbumTable($tableGateway);
                    return $table;
                },
                'AlbumTableGateway' => function ($sm) {
                    $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
                    $resultSetPrototype = new ResultSet();
                    $resultSetPrototype->setArrayObjectPrototype(new Album());
                    return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
                },
            ),
        );
    }
//zend framework3中的樣子
 public function getServiceConfig()
    {
        return [
            'factories' => [
                Model\AlbumTable::class => function($container) {
                    $tableGateway = $container->get(Model\AlbumTableGateway::class);
                    return new Model\AlbumTable($tableGateway);
                },
                Model\AlbumTableGateway::class => function ($container) {
                    $dbAdapter = $container->get(AdapterInterface::class);
                    $resultSetPrototype = new ResultSet();
                    $resultSetPrototype->setArrayObjectPrototype(new Model\Album());
                    return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
                },
            ],
        ];
    }
  1. $smApakah jenisnya?

  2. ModelAlbumTableGateway::class這個(gè)怎么理解?整個(gè)項(xiàng)目中并沒有出現(xiàn)AlbumTableGateway這個(gè)類,只有AlbumTableKelas ini

phpcn_u1582
phpcn_u1582

membalas semua(1)
洪濤

自己找了一個(gè)相似的問題,原文在下面,翻譯在更下面。

sumber: AlbumTableGateway dalam Panduan Pengguna Zend Framework 2

Cara terbaik untuk memikirkan perkara ini ialah kaedah get() ServiceManager mengambil nilai kunci, bukan nama kelas. Nilai utama perlu dipetakan kepada sesuatu yang akan menyebabkan contoh kelas dikembalikan.

Jika kunci berada dalam bahagian invokables, maka ServiceManager akan cuba membuat instantiat rentetan yang ditunjuk oleh kunci dengan andaian bahawa ia adalah nama kelas:

'invokables' => array(
    'some_name' => 'My\Mapper\SomeClassName',
),

Jika kunci berada dalam bahagian kilang, maka ServiceManager akan melaksanakan panggilan balik yang dituju oleh kunci dan mengharapkan contoh objek dikembalikan:

'factories' => array(
    'some_name' => function($sm) { return new \My\Mapper\SomeClassName(); },
),

Secara umum, anda menggunakan kilang apabila anda perlu melakukan sesuatu yang lebih daripada sekadar membuat kelas - biasanya anda perlu menyediakan kelas dengan pergantungan lain. Jika anda hanya perlu membuat instantiate kelas, gunakan invokable.


翻譯:
最好這樣想:ServiceManagerget()方法接受一個(gè)而不是不類天,這個(gè)會(huì)去匹配invokable或kilang中的元素并返回一個(gè)創(chuàng)建的對象。ServiceManagerget()方法接受一個(gè)而不是一個(gè)類名,這個(gè)會(huì)去匹配invokablesfactories中的元素并返回一個(gè)創(chuàng)建的對象。
如果這個(gè)是處于invocables的區(qū)域, 它就會(huì)實(shí)例化匹配到的那個(gè)類。

'invokables' => array(
    'some_name' => 'My\Mapper\SomeClassName',
),

如果這個(gè)處于工廠里,就會(huì)通過指向的callback函數(shù)實(shí)例化一個(gè)對象返回。

'factories' => array(
    'some_name' => function($sm) { return new \My\Mapper\SomeClassName(); },
),

(如果都沒匹配到就報(bào)錯(cuò)了)
一般來說,只有當(dāng)你不僅僅是實(shí)例化一個(gè)已存在的類,而是要去構(gòu)建一個(gè)有其他依賴的類的時(shí)候才會(huì)使用factories,否則的話就用invokables鍵中文kod>是處于invocable的區(qū)域, 它就會(huì)實(shí)例化匹配到的那個(gè)類。

rrreee ??如果這個(gè)鍵處于工廠里,就會(huì)通過鍵指向的panggil balik函數(shù)實(shí)例化一血。 rrreee ??(如果都沒匹配到就報(bào)錯(cuò)了)??一般來說,只有當(dāng)你不僅僅是實(shí)例化嘯實(shí)例化嘯實(shí)例化家要去構(gòu)建一個(gè)有其他依賴的類的時(shí)候才會(huì)使用kilang ,否則的話就用invokable就好了??
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan