【问题标题】:Using PHP 5.3 namespaces (Doctrine2) with Zend Framework classes将 PHP 5.3 命名空间 (Doctrine2) 与 Zend 框架类一起使用
【发布时间】:2010-07-28 14:25:50
【问题描述】:

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

致命错误:接口 '应用程序\实体\ Zend_Acl_Resource_Interface' 没有找到 D:\项目\网站\php\ZendFram ework\LearningZF\library\Application\Entities\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 行

【问题讨论】:

    标签: php namespaces


    【解决方案1】:

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

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

    【讨论】:

    • 我正在使用 ZF1.10。哦,但是 2.0 已经出来了,我知道它正在开发中,但我想没有文档可以帮助我入门? isit ... erm ... 至少对我开始学习有用吗?还是到处给出错误?我会检查链接虽然
    • @jiewmeng 它还没有正式发布。就像 Doctrine 仍处于测试阶段一样。
    • Doctrine 到目前为止对我来说效果很好:) 好的,回到工具。我创建了命名空间为 ZF1.10 的 php 5.3。我想开始使用它。我想我所要做的就是将所有 PEAR 命名空间转换为真正的命名空间。在转换过程中,我在映射xml中查找Zend_Controller_Plugin_ErrorHandler但找不到它...
    • ...我看到很多路径无效?因为Zend/Application.php 之类的东西变成了Zend/Application/Application.php
    • @jiewmeng 在ZF2.0, this is where the file is supposed to be then。不过,该工具帮不上什么忙。没用过。只记得它是公开的。
    【解决方案2】:

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

    【讨论】:

    • 我试过了,但没有找到'Interface 'Zend_Acl_Resource_Interface''奇怪,看看我的更新...
    【解决方案3】:

    我将把它作为答案,所以如果没有人有任何其他答案,我可以将此 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 中的转换工具。但我还不能修复我在“不干净”转换中遇到的所有错误。路径被打破。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多