новый Zend_Loader_Autoloader не находит файлы
-
18-09-2019 - |
Вопрос
Я только что обновился с 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
.Как называется твой класс?
Я протестировал здесь, и все работает нормально.