我正在尝试将数据库表类移动到\ Model \ Repository的推荐位置而不是\ Model,以便更好地分割模型代码。但是当我这样做时,它找不到类。我对ZF2很新,所以它可能很简单。我假设可以将模型类放入分段目录中,以便更好地分类模型类文件。
这有效:
模块\客户端\ SRC \客户\模型\ ClientTable.php
Module.php中ClientTable.php的路径:
public function getServiceConfig() {
return array(
// setup multiple table access by model as {tablename}Table
'factories' => array(
'Client\Model\ClientTable' => function($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$table = new Model\ClientTable($dbAdapter);
return $table;
},
),
);
}
但是试图从Repository调用会破坏它并导致找不到类方法,但如果它在Module目录中,应该找到它,对吗?
模块\客户端\ SRC \客户\模型\库\ ClientTable.php
Module.php中ClientTable.php的路径:
public function getServiceConfig() {
return array(
// setup multiple table access by model as {tablename}Table
'factories' => array(
'Client\Model\Repository\ClientTable' => function($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$table = new Model\Repository\ClientTable($dbAdapter);
return $table;
},
),
);
}
答案 0 :(得分:2)
您遇到类自动加载路径的问题。您应该转到模块配置(module.config.php和module.php)更新命名空间映射以指向文件的新位置。
例如,你将在module.php中有这样的函数public function getAutoloaderConfig() {
return array (
'Zend\Loader\ClassMapAutoloader' => array (),
'Zend\Loader\StandardAutoloader' => array (
'namespaces' => array (
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
"DBAL\\Entity" => __DIR__ . '/src/DBAL/Entity',
"DBAL\\Entity\\User" => __DIR__ . '/src/DBAL/Entity/User'
)
)
)
;
}
这是我的一个项目的代码。如果您发布了module.config.php
和module.php
,我可以为您提供更具体的帮助
可能你有一些指向src\MyApp\Model
的映射,你必须将它们更改为src\MyApp\Model\Repository
另外,请确保在移动的文件中有正确的Client\Model\Repository
命名空间