我无法在应用程序文件夹中的文件中加载模型。我的zend结构就像这样
project
-- application
--configs
--controllers
--models
--views
--cron_file.php
--libraray
--index.php
>
--htaccess
并在我的cron文件中加载我给出的模型
define('APPLICATION_PATH', realpath(dirname(__FILE__)));
set_include_path(APPLICATION_PATH . '/../library'.PATH_SEPARATOR .APPLICATION_PATH.'/models'.PATH_SEPARATOR.get_include_path());
$mt= new Model_Modelname;
$mt->functionname();
如果我执行这样的文件http://hostname/project/application/cron_file.php
我收到这样的错误
Warning: include_once(Model\Modelname.php): failed to open stream: No such file or directory in C:\xampp\htdocs\project\library\Zend\Loader.php on line 83
Warning: include_once(): Failed opening 'Model\Modelaname.php' for inclusion (include_path='C:\xampp\htdocs\project\application/../library;C:\xampp\htdocs\project\application/models;.;C:\xampp\php\PEAR') in C:\xampp\htdocs\project\library\Zend\Loader.php on line 83
Fatal error: Class 'Model_Modelname' not found in C:\xampp\htdocs\project\application\cron_file.php on line 75
请帮我解决这个问题。感谢
答案 0 :(得分:0)
您可能已经注意到,应用程序文件夹中的文件不符合正常的自动加载标准(例如,文件夹为models
和forms
,但其中的类名为model
和{{1 }})。您需要将资源加载器(form
)与这些规则一起添加到自动加载器。由于我们希望使用Zend应用程序的标准规则,因此我们可以使用bulid-in资源 - Zend_Loader_Autoloader_Resource
。
Zend_Application_Module_Autoloader
现在,您可以在Zend中加载类似于define('APPLICATION_PATH', realpath(dirname(__FILE__))); //application folder path
require_once 'Zend/Loader/Autoloader.php'; //you might need to add Zend library to php path
$al = Zend_Loader_Autoloader::getInstance();
$al->registerNamespace('Application');
$rl = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Application',
'basePath' => APPLICATION_PATH,
));