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

zend-framework - Problèmes de configuration de la fonction getServiceConfig dans Zend Framework2 et 3
phpcn_u1582
phpcn_u1582 2017-05-16 16:43:14
0
1
736
//Module.php中的一段代碼(項目是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. $smDe quel type s'agit-il ?

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

phpcn_u1582
phpcn_u1582

répondre à tous(1)
洪濤

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

source?: AlbumTableGateway dans le guide de l'utilisateur de Zend Framework 2

La meilleure fa?on d'y penser est que la méthode get() de ServiceManager prend une valeur clé, pas un nom de classe. La valeur clé doit être mappée à quelque chose qui entra?nera le retour d'une instance de classe.

Si la clé se trouve dans la section invokables, alors le ServiceManager tentera d'instancier la cha?ne vers laquelle pointe la clé en supposant qu'il s'agit d'un nom de classe?:

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

Si la clé se trouve dans la section des usines, le ServiceManager exécutera le rappel vers lequel pointe la clé et s'attendra à ce qu'une instance d'objet soit renvoyée?:

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

En général, vous utilisez une usine lorsque vous devez faire quelque chose de plus que simplement instancier une classe - vous devez généralement configurer la classe avec une autre dépendance. Si vous avez juste besoin d'instancier une classe, utilisez un invocable.


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

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

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

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

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

rrreee ??如果這個處于工廠里,就會通過指向的callback函數(shù)實例化一個對象返回。?? rrreee ??(如果都沒匹配到就報錯了)??一般來說,只有當(dāng)你不僅僅是實例化一個已存在的類,而是Usines de production ,否則的話就用invokables就好了??
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal