Zend Framework автозагрузчик странного поведения - PullRequest
2 голосов
/ 11 марта 2012

Я перенесу некоторый код проекта в ZF-Boilerplate и столкнулся с некоторым странным поведением с автозагрузчиком.

У меня есть эти строки в application.ini

autoloadernamespaces[] = "App_"
autoloadernamespaces[] = "Boilerplate_"
;autoloaderNamespaces[] = "DCH_"
autoloadernamespaces[] = "Elastica_"
autoloadernamespaces[] = "EasyBib_"

обратите внимание, что;autoloaderNamespaces [] = "DCH_" закомментирован.

Позже, в моей начальной загрузке, у меня есть следующая строка в качестве теста:

$test=new Elastica_Facet_Range('testing');

Это работает нормально, но если я раскомментируюранее закомментированная строка, я получаю эту ошибку:

Fatal error: Class 'Elastica_Facet_Range' not found in /vagrant/www/myswap/application/Bootstrap.php on line 43

Это сводит меня с ума, потому что означает, что я не могу заставить мои пространства имен работать.пространство имен защищенной переменной содержит: Zend , ZendX_, App_, Boilerplate_, Elastica_ и EasyBib_

со строкой без комментариев пространство имен содержит (также, если я перемещаю строку DCH в конец списка): Zend_, ZendX и DCH_

Если переместить строку DCH_ в начало списка, пространства имен содержат: Zend , ZendX_, App_, Boilerplate_, Elastica_ и EasyBib_

Я добавил следующее в загрузчик, чтобы заставить его работать, но это хак, и я не доволен этим:

$autoloader = \Zend_Loader_Autoloader::getInstance();

        $autoloader->registerNamespace('DCH_');

Есть идеи?

1 Ответ

2 голосов
/ 12 марта 2012

Понятия не имею, почему это работает, но работает. Я не вижу никакой разницы вообще. Я закомментировал эти строки и скопировал оригиналы из другого проекта, и это работает ??

;autoloadernamespaces[] = "App_"
;autoloadernamespaces[] = "Boilerplate_"
;autoloaderNamespaces[] = "DCH_"
;autoloadernamespaces[] = "Elastica_"
;autoloadernamespaces[] = "EasyBib_"

    autoloaderNamespaces[] = "App_"
    autoloaderNamespaces[] = "DCH_"
    autoloaderNamespaces[] = "Boilerplate_"
    autoloaderNamespaces[] = "Elastica_"
    autoloaderNamespaces[] = "EasyBib_"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...