Устранение неполадок автозагрузчика Zend Framework - PullRequest
0 голосов
/ 14 октября 2011

Может кто-нибудь порекомендовать способ устранения неполадок, почему определенный класс не загружается автозагрузчиком?Я использую автозагрузку пространства имен следующим образом:

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

if (APPLICATION_ENV == 'development') {
    $loader->suppressNotFoundWarnings(false);
}

Некоторые классы в пространстве имен Xyz загружаются, а другие нет.В месте, где выдается ошибка о том, что класс не найден, я могу добавить require_once в файл класса, и он отлично работает.

Я видел этот вопрос: zend_loader_autoloader делаетПохоже, не загружается абстрактный класс , где автор отладки Zend_Loader, но когда я это делаю, единственными классами, которые я вижу, это автозагрузка, являются классы Zend_ и ZendX_.Где загружаются другие зарегистрированные пространства имен, и есть ли способ выгрузить все классы, которые загружены в данный момент в моем коде?

Ответы [ 2 ]

0 голосов
/ 14 октября 2011

В итоге я понял, в чём была моя проблема. Я наконец смог отследить его, шаг за шагом пройдя автозагрузчик. Произошло то, что когда я преобразовывал свои классы из пространств имен userland (Xyz_My_ClassName) для использования определения пространства имен PHP в верхней части каждого класса, я пропустил изменение объявлений импорта, поэтому автозагрузчик искал старое имя класса. Спасибо всем, кто помог мне выследить это.

0 голосов
/ 14 октября 2011

Вам необходимо указать application.ini

1) autoloaderNamespaces[] = "Xyz"

2) Берегитесь того, что в вашей библиотеке есть папка Xyz.

3) Создайте файл наподобие test.php в Xyz

4) В test.php необходимо иметь class Xyz_test extends ....

5) В контроллере индекса попробуйте $var = new Xzy_test();

...