Zend framework2 移动到src\MyApp\model\Repository时未找到ZF2模型类

Zend framework2 移动到src\MyApp\model\Repository时未找到ZF2模型类,zend-framework2,Zend Framework2,我正在尝试将数据库表类移动到\Model\Repository的推荐位置,而不是\Model,以便更好地分割模型代码。但当我这样做时,它找不到类。我对ZF2比较陌生,所以它可能很简单。我假设可以将模型类放在分段目录中,以便更好地分类模型类文件 这项工作: module\Client\src\Client\Model\ClientTable.php 从Module.php到ClientTable.php的路径: public function getServiceConfig() {

我正在尝试将数据库表类移动到\Model\Repository的推荐位置,而不是\Model,以便更好地分割模型代码。但当我这样做时,它找不到类。我对ZF2比较陌生,所以它可能很简单。我假设可以将模型类放在分段目录中,以便更好地分类模型类文件

这项工作:

module\Client\src\Client\Model\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;
            },
        ),
    );
}
    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;
            },
        ),
    );
}
但是尝试从存储库调用会破坏它,并导致找不到类方法,但如果它在模块目录中,则应该找到它,对吗

module\Client\src\Client\Model\Repository\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;
            },
        ),
    );
}
    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;
            },
        ),
    );
}

类自动加载路径有问题。您应该转到模块配置(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
名称空间

听起来好像在将模型类移动到存储库文件夹时没有更改其名称空间。ie更改
名称空间客户端\模型
名称空间客户端\模型\存储库
在您的
ClientTable.php
文件中。@Crisp-我尝试按照您的建议添加名称空间Client\Model\Repository,然后毫无乐趣地发布了这个问题:(解决方案说明:我不需要更改AutoloaderConfig()的任何内容。我更改了模型/存储库类上的名称空间以包含存储库,更改了引用它们的路径以包含Module.php::getServiceConfig()中的存储库以及调用类方法的任何其他位置。仍在学习这些内容,谢谢!:)太好了!!所有这些在开始时都很混乱,但很快你就会习惯,很容易找到这类东西。