Son*_*ngo 3 php zend-framework module classloader zend-autoloader
我使用Zend框架开发项目,我遇到了以下问题.我正在使用他们的zf.sh脚本生成的Zend框架MVC文件夹结构.
我的库文件夹有Zend库文件夹,它的类可以在应用程序内正常调用.我在我的库中为我的类创建了另一个文件夹.这是现在的文件夹结构:
我的项目
| _application
| _docs
| _public
| _library
| _Zend
| _Buyers
| _Donations.php
| _scripts
我将我的Donation类命名为"Buyers_Donations"作为Zend框架命名约定.
当我尝试在我的控制器中使用这个类时
$obj= new Buyers_Donation();
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误,无法在控制器内找到类Buyers_Donation.
但是当我在我的Bootstrap中添加以下行时,它工作正常:
$loader = Zend_Loader_Autoloader::getInstance();
$loader->setFallbackAutoloader(true);
$moduleLoder = new Zend_Application_Module_Autoloader(
array(
'namespace'=>'',
'basePath'=>dirname(__FILE__)
));
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下实际发生了什么以及模块自动加载器有什么用处,虽然我的应用程序中没有任何模块?
如您所料,由于您没有使用模块,因此不应使用模块自动加载器.假设Zend*类正确地为您自动加载,您需要做的就是告诉标准自动加载器它还应该用于"买方"命名空间中的类.因此,不要使用您发布的代码段,而是执行以下操作:
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('Buyers_');
Run Code Online (Sandbox Code Playgroud)
如果您愿意,也可以在application.ini中设置它.
我也假设您的类在库文件夹中,而不是在您的问题暗示的公共目录中(这将是不好的).