Я закончил свое первое веб-приложение в рамках MVC zend и все отлично работает на моем локальном хосте.Автозагрузка класса в MVC Zend Framework не работает
Поэтому я загружаю его на сервер, и есть проблема с автозагрузкой моего класса. я получаю сообщение об ошибке, когда я хочу создать объект из моего класса в IndexController:
$this->view->bottomCache = new Application_Model_Cache($this->cacheTime,'bottomCache');
И я получаю это Сообщение об ошибке:
Fatal error: Class 'Application_Model_Cache' not found in ........./IndexController.php on line 19
На моем локальном хосте Я использую Zend Server CE и там работает ,
Пожалуйста, дайте мне несколько советов, что я могу проверить, чтобы узнать, почему он не работает?
РЕШИТЬ: первая буква имени класса должна быть в верхнем регистре, cache.php
EDIT2: модели папки против модели Как вы можете видеть в этом example
// application/models/Guestbook.php class Application_Model_Guestbook {
EDIT1: Я использовал учебник по http://framework.zend.com/manual/en/learning.quickstart.create-project.html, поэтому я использовал файл structu re, который есть.
quickstart |-- application | |-- Bootstrap.php | |-- configs | | `-- application.ini | |-- controllers | | |-- ErrorController.php | | `-- IndexController.php | |-- models | | |-- cache.php | | `-- DbTable | | `-- Downloaded.php | `-- views | |-- helpers | `-- scripts | |-- error | | `-- error.phtml | `-- index | `-- index.phtml |-- library |-- public | |-- .htaccess | `-- index.php
Bootstrap.php В моей загрузке ремень я получил:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initAutoload() { $autoloader = new Zend_Application_Module_Autoloader(array( 'namespace' => 'Application_', 'basePath' => dirname(__FILE__), ));; $autoloader->addResourceType('model', 'model/', 'Model'); return $autoloader; } protected function _initDoctype() { $this->bootstrap('view'); $view = $this->getResource('view'); $view->doctype('XHTML1_TRANSITIONAL'); } }
application.ini
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Application" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" resources.frontController.params.displayExceptions = 0 resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" phpSettings.date.timezone = "Europe/London" resources.db.adapter = PDO_MYSQL resources.db.params.host = localhost resources.db.params.username = ***** resources.db.params.password = **** resources.db.params.dbname = ***** resources.db.params.charset = "utf8" resources.db.params.names = "utf8" resources.view.doctype = "XHTML1_TRANSITIONAL" [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1
Я добавил _initAutoload, но проблема по-прежнему такая же. Я использую файловую структуру, как в учебном руководстве по быстрому запуску на framework.zend.com. – 312k1t
@ 312k1t Отредактирован мой ответ. Вы используете модели в своем классе, но имеете модель папке. Для работы автозагрузчика им требуется машина. – Iznogood
Я не знаю почему, но это не проблема. Это работает на моем локальном хосте, и оно также находится в учебниках. Это было одно из первых, что я изменил, но он все еще не работает. – 312k1t