Вопрос

Я только что обновился с ZF 1.7 до ZF 1.9, и почти все работает нормально...за исключением автозагрузчика.

Старый:

require_once('Zend/Loader.php');  
Zend_Loader::registerAutoload();

Новое:

require_once 'Zend/Loader/Autoloader.php';  
$loader = Zend_Loader_Autoloader::getInstance();  
$loader->registerNamespace('MySiteName_');
$loader->setFallbackAutoloader(true);

Файлы, которые мне нужны для автоматической загрузки, в основном не имеют пространства имен (потому что это большой проект с предварительным пространством имен).Они находятся в следующих каталогах:

  • /приложение/контроллеры
  • /распространенные/модели
  • /библиотека
  • /поставщик

Сайт, кажется, работает нормально, ЗА исключением того, что он не может найти /library/Form.php
Раньше это было возможно, но больше нет.Это сработает, если я добавлю require_once 'library/Form.php ', но в этом не должно быть необходимости, и я беспокоюсь, что если я начну делать это в некоторых местах, мне нужно будет отказаться от автозагрузчика и жесткого кода all includes.Я думал, что добавление "setFallbackAutoloader (true)" в сочетании с наличием "library" в моем пути включения исправит это, но этого не произошло.

Мой путь включения таков:
.:/Пользователи/lofye/Документы/htdocs/имя файла / поставщик
:/Пользователи/lofye/Документы/htdocs/имя файла mysit/общее
:/Пользователи/lofye/Документы/htdocs/mysitename/общие/модели
:/Пользователи/lofye/Документы/htdocs/mysitename/библиотека
:/Пользователи/lofye/Документы/htdocs/mysitename

Любая помощь очень ценится!

Это было полезно?

Решение

Ты сказал, что это сработает, если ты сделаешь это:

require_once 'library/Form.php';

Но, если включен путь к вашей библиотеке, то вы должны указать, как это делает автозагрузчик, следующим образом:

require_once 'Form.php';

Попробуйте ввести require_once 'Form.php ';в ваш сценарий.Это бомба?Затем ваш включаемый путь не содержит / library, и это необходимо будет исправить.

Другие советы

Ваш автозагрузчик попытается загрузить только те классы, которые начинаются с MySiteName_.Попробуйте добавить Form может быть, как пространство имен?

$loader->registerNamespace('Form');

Имя класса внутри файла library/Form.php должно быть Form.Как называется твой класс?

Я протестировал здесь, и все работает нормально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top