Я не могу загрузить модели в файл, который находится в папке приложения. моя структура 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
файл, подобный этому 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
Пожалуйста, помогите мне решить эту проблему. благодаря
Как вы, вероятно, заметили, файлы в папке приложения не соответствуют нормальным стандартам автозагрузки (например, папки представляют собой models
и forms
, но классы в них имеют model
и form
имен). Вам необходимо добавить загрузчик ресурсов (Zend_Loader_Autoloader_Resource
) с этими правилами для автозагрузчика. Поскольку мы хотим использовать стандартные правила для приложения Zend, мы можем использовать ресурс bulid-in - Zend_Application_Module_Autoloader
.
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,
));
Теперь вы можете загружать классы, как всегда, в Zend - $mt= new Application_Model_Modelname;
Warning: require_once(Zend/Loader/Autoloader.php): failed to open stream: No such file or directory in C:\xampp\htdocs\project\application\cron_file.php on line 76 Fatal error: require_once(): Failed opening required 'Zend/Loader/Autoloader.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\xxxx
.
$path = '/path/to/zendfrmework/library'; set_include_path(get_include_path() . PATH_SEPARATOR . $path);
Zend_Loader
.zend_loader
и попробовал. Невозможно загрузить модель