我正在用zend框架2构建一个CMS。我有两个问题,希望你能帮助我。
- 我的模块使用许多不同的SQL表。按照skeleton-application中的示例,我必须这样做:
getServiceConfig() {
返回数组(
'factories' => array(
)'AlbumModelAlbumTable' => function($sm) {},'AlbumTableGateway' => function ($sm) {},'AlbumModelTrackable' => function($sm) {},'TrackTableGateway' => function ($sm) {},'AlbumModelArtistTable' => function($sm) {},'ArtistTableGateway' => function ($sm) {},'TrackTableGateway' => function ($sm) {},'AlbumModelSingerArtistTable' => function($sm) {},'SingerTableGateway' => function ($sm) {},…),);}
那么我应该像上面那样在gServiceConfig()中放置许多模型吗?或者你能给我推荐其他款式吗?
- 我想问一下,当我们在getServiceConfig中使用"工厂"时,是否只有在我们调用它时才会初始化模型?非常感谢您的回复!
1)您可以避免为每个表类创建工厂的冗余代码。你会得到这样的内容:
'invokables'=>array(
'ModuleNameModelTableA' => 'ModuleNameModelTableA',
'ModuleNameModelTableB' => 'ModuleNameModelTableB',
'ModuleNameModelTableC' => 'ModuleNameModelTableC',
),
对此,您可以参考这篇有趣的文章:设置默认Db适配器。
2)是的,服务管理器不会创建任何实例,直到你请求它,即实例只在你调用时创建,例如:
$this->getServiceLocator()->get('Trackable');