В первом примере вы импортируете пространства имен в контроллер.Во втором примере вы назначаете контроллер пространству имен.
Импорт пространств имен позволяет ссылаться на классы без необходимости использовать их полное имя класса.
new \Entities\User() // without import
new User() // with import
Назначение пространства именваш контроллер фактически изменяет полное имя для вашего класса.
new \IndexController() // without namespace
new \Entities\IndexController() // with namespace
(Классы внутри пространства имен всегда могут ссылаться на другие классы в этом же пространстве имен без необходимости его «использовать». Я подозреваю, что это былоосновная причина, по которой вы пытались использовать вариант 2).
Zend Framework 1.10 по-прежнему не знает пространства имен.При разборе URL-адреса и попытке загрузить контроллер он будет выглядеть только в глобальном пространстве имен по умолчанию для \IndexController
и не будет знать, что он был назначен пользовательскому пространству имен (\Entities\IndexController
).
Моя рекомендация заключается в том, что при работе с контроллерами в ZF не назначайте им пространства имен.Импорт работает нормально.Нам придется подождать, пока ZF 2.0 не получит полную поддержку пространства имен.