zend框架中的自动加载
如何自动加载模块路径上自定义目录中的类。我的应用程序的结构如下所示,
application
|_ modules
|_admin
|_api
| |_Core.php
|_elements
|_Dialog.php
我有两个自定义目录,“api”和“elements”,当我实例化这两个类的对象时,我收到了错误消息:“未找到致命错误类 Admin_Api_Core”。我尝试使用 registerNamespace 但它根本不起作用
Zend_Loader_Autoloader::getInstance()->registerNamespace('Admin_');
how to autoload a class in custom directory on module path. My application's structure is like below
application
|_ modules
|_admin
|_api
| |_Core.php
|_elements
|_Dialog.php
i have two custom directory, 'api' and 'elements', when i instantiated an object of that two class i have received error message: 'Fatal error class Admin_Api_Core is not found'. I try with registerNamespace but it not work at all
Zend_Loader_Autoloader::getInstance()->registerNamespace('Admin_');
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
查看 ZF 资源自动加载器。
将以下内容添加到 Bootstrap.php
Api_Core 加载
APPLICATION_PATH 。 '/api/Core.php
Element_Core 加载 APPLICATION_PATH 。 '/elements/Core.php
Admin_Api_Core 加载 APPLICATION_PATH 。 '/modules/admin/api/Core.php
Admin_Element_Core 加载 APPLICATION_PATH 。 '/modules/admin/elements/Core.php
Have a look at ZFs Resource Autoloaders.
Add the following to your Bootstrap.php
Api_Core loads
APPLICATION_PATH . '/api/Core.php
Element_Core loads
APPLICATION_PATH . '/elements/Core.php
Admin_Api_Core loads
APPLICATION_PATH . '/modules/admin/api/Core.php
Admin_Element_Core loads
APPLICATION_PATH . '/modules/admin/elements/Core.php
您可以在 Module_Bootstrap 中配置自动加载(与 Benjamin Cremer 的答案几乎相同的方法,但基于模块)。
为此,请在 /modules/admin 文件夹中创建包含以下内容的 Bootstrap.php 文件:
之后,您将能够实例化类 Admin_Api_Core 等(您应该指定所有资源类型)。如果您有许多模块,您可以为所有模块创建此类引导程序。
You can configure autoloading inside your Module_Bootstrap (almost same approach as in Benjamin Cremer's answer but module based).
To do it - create file Bootstrap.php in /modules/admin folder with the following content:
After that you'll be able to instantiate class Admin_Api_Core etc. (you should specify all resoursTypes). If you have many modules, you can create such bootstraps for all of them.