我想给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完整的命名空间支持。

其他提示

去通手动和读取某些后此页面它似乎是在PHP当你想申报和建设围绕你使用你的第二个语法命名空间。因此,这将创建相似对象

Entities\IndexController 

因此,其不再被Zend找到。

根据这些网站,你必须使用使用导入的命名空间,并使用它。

这就是为什么它在你的第一个例子,而不是在你的第二个。

希望我是对的,这有助于!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top