许多表网关在一个模块zf2中



我正在用zend框架2构建一个CMS。我有两个问题,希望你能帮助我。

  1. 我的模块使用许多不同的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()中放置许多模型吗?或者你能给我推荐其他款式吗?

  1. 我想问一下,当我们在getServiceConfig中使用"工厂"时,是否只有在我们调用它时才会初始化模型?非常感谢您的回复!

1)您可以避免为每个表类创建工厂的冗余代码。你会得到这样的内容:

'invokables'=>array(
'ModuleNameModelTableA' => 'ModuleNameModelTableA',
'ModuleNameModelTableB' => 'ModuleNameModelTableB',
'ModuleNameModelTableC' => 'ModuleNameModelTableC',
 ),

对此,您可以参考这篇有趣的文章:设置默认Db适配器。

2)是的,服务管理器不会创建任何实例,直到你请求它,即实例只在你调用时创建,例如:

$this->getServiceLocator()->get('Trackable');

最新更新