将PHP 5.3命名空间(Doctrine2)与Zend Framework类一起使用

时间:2010-07-28 14:25:51

标签: php namespaces

我遇到的情况是我的学说模型Post位于命名空间Application\Entities中,我想尝试实现Zend_Acl_Resource_Interface。我收到了错误

  

致命错误:界面   '应用程序\实体\接口Zend_Acl_Resource_Interface'   找不到   d:\项目\网站\ PHP \ ZendFram   ework \ LearningZF \图书馆\应用\ \实体post.php中   在第8行

namespace Application\Entities;
use DoctrineExtensions\NestedSet\Node;

/**
 * @Entity @Table(name="posts")
 */
class Post implements Node, Zend_Acl_Resource_Interface {

更新

如果我尝试

class Post implements Node, \Zend_Acl_Resource_Interface {
  

致命错误:界面   'Zend_Acl_Resource_Interface'没有   在发现   D:\ Projects \ Websites \ php \ ZendFramework \ LearningZF \ library \ Application \ Entities \ Post.php on   第8行

3 个答案:

答案 0 :(得分:2)

您使用的是the ZF 2.0 branch还是稳定的,例如1.10?您的自动加载器是否设置为使用ZF命名方案加载类?

您可以使用ZF开发人员用于将ZF转换为使用命名空间的转换工具:

答案 1 :(得分:0)

据我所知,Zend Framework不使用命名空间(直到2.x出现),因此它的类在全局命名空间中。试试class Post implements Node, \Zend_Acl_Resource_Interface {

答案 2 :(得分:0)

我将把它作为答案,所以如果没有人有任何其他答案,我可以将此qn标记为已回答,它实际上是我使用的解决方法。我不太确定为什么它完全正常工作,或者更确切地说Zend自动加载器失败的原因

我添加了require_once以包含Zend_Acl_Resource_Interface

namespace Application\Entities;
use DoctrineExtensions\NestedSet\Node;
require_once "Zend/Acl/Resource/Interface.php";

/**
 * @Entity @Table(name="posts")
 */
class Post implements Node, \Zend_Acl_Resource_Interface {

我认为更好的解决方法是@Gordon's answer中的转换工具。但我无法解决所有“不洁”转换所带来的错误。路径坏了。