zend-framework - 如何在基于 Zend Framework 的应用程序中的应用程序 Bootstrap 中使用模块中的模型类?

标签 zend-framework model module autoload bootstrapping

我正在开发一个带有一些模块的 Zend Framework MVC 应用程序,例如 Users 模块。有一个模型类名称“Users_Model_User”,可以在任何模块/ Controller 操作中使用。但我需要在应用程序 Bootstrap 类中使用该模型的实例,但出现异常:

Fatal error: Class 'Users_Model_User' not found in /my/path/...

我为每个模块都有一个 Bootstrap 类:

class Users_Bootstrap extends Zend_Application_Module_Bootstrap {

    protected function _initAutoloader() {
        $autoloader = new Zend_Application_Module_Autoloader(array(
                    'namespace' => 'Users_',
                    'basePath' => APPLICATION_PATH . '/modules/users'
                ));

        return $autoloader;
    }

}

正如我所说,这些模块工作得很好(接收请求、处理和返回响应)。我认为这工作得很好,因为模块引导类负责加载默认模块资源,例如模型类。但主要的 Bootstrap 类似乎缺乏对“Users”模块模型类的访问。

最佳答案

Users_Bootstrap 在应用程序 Bootstrap 之后执行,这意味着您的 _initAutoloader() 方法尚未在应用程序 Bootstrap 中执行。

解决方案可能是将代码从 _initAutoloader() 移至主 Bootstrap 。这将解决您的问题!您也可以将主 Bootstrap 中的代码片段表示为模块 Bootstrap ,这对我来说更有意义。请注意,所有模块 Bootstrap 始终都会被调用,与当前请求的模块无关。

另外,给大家分享一下this article关于ZF的bootstrapping过程,希望对你有帮助;)

关于zend-framework - 如何在基于 Zend Framework 的应用程序中的应用程序 Bootstrap 中使用模块中的模型类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10205124/

相关文章:

php - Zend Framework 分组案例

PHPUnit代码覆盖生成导致内存耗尽

php - Zend 多复选框 : set maximum selection

ruby-on-rails - 如何使我的belongs_to 字段 optional ?

perl - 尝试在 Perl 中使用 Module 并在模块不可用时打印消息

javascript - Durandal TodoMVC - 无法将值写入 ko.compulated

php - 当我将 Zend_Db_Table_Abstract 与 select 和 join 一起使用时,fetchAll 返回一行

python-3.x - RuntimeError : You must compile your model before using it

model - 扩展富域模型

javascript - TS4060 : Return type of exported function has or is using private name 'class'