在当前(2.1)ZF2用户指南的“数据库和模型”一章中有一个代码片段,我不明白:
(块“使用ServiceManager配置表网关并注入AlbumTable”)
...
class Module
{
// getAutoloaderConfig() and getConfig() methods here
// Add this method:
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);
},
),
);
}
}
该变量$sm
稍后将成为 的实例Zend\ServiceManager\ServiceManager
,对吗?Zend\ServiceManager\ServiceManager#get(...) 方法需要一个类名作为第一个参数。但是没有类 AlbumTableGateway。只有两个模型类:Album\Model\Album 和 Album\Model\AlbumTable。
这是指南中的错误还是我错误地理解了代码?
谢谢