doctrine2 Zend框架namespaceing控制器
-
26-09-2019 - |
题
我想给doctrine2沙箱中的默认的Zend Framework应用程序集成。当试图使用在控制器命名空间我得到一个“无效控制器类(‘索引控制器’)”错误
这个作品:
use Entities\User, Entities\Address;
class IndexController extends Zend_Controller_Action
{
...
}
这并不(但应):
namespace Entities;
class IndexController extends \Zend_Controller_Action
{
...
}
解决方案
在第一个例子中,要导入的命名空间到控制器中。在第二个例子中,要分配控制器命名空间。
导入命名空间允许你引用类,而无需用户自己的完全合格的类名称。
new \Entities\User() // without import
new User() // with import
指定一个命名空间到你的控制器实际上是为你改变类的完全限定名。
new \IndexController() // without namespace
new \Entities\IndexController() // with namespace
(命名空间内的类可以总是引用该同一命名空间的其他类,而不必“使用”它。我怀疑是你试图使用选项2的首要原因)。
Zend框架1.10仍然命名空间无知。当解析一个URL并试图加载控制器,它会看起来只是看在\IndexController
默认的全局命名空间,且根本不知道它被分配到一个用户定义的命名空间(\Entities\IndexController
)。
我的建议是,在ZF与控制器工作时,不分配命名空间给他们。导入工作正常。我们将不得不等待,直到ZF 2.0完整的命名空间支持。
不隶属于 StackOverflow