找不到类继承

时间:2013-11-16 02:52:31

标签: php class zend-framework inheritance doctrine-orm

我正在使用Zend Framework和Doctrine 2构建应用程序。

我的代码如下所示:

namespace Entities;
use Doctrine\Common\Collections\ArrayCollection;

/** 
 * @Entity (repositoryClass="Repositories\Person") 
 * @Table(name="persons")
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="type", type="string")
 * @DiscriminatorMap({"2"="User"})
 */
class Person
{
    /**
     * @Id @Column(type="integer")
     * @GeneratedValue(strategy="AUTO")
     */
    private $id;

}

我的班级用户

namespace Entities;
use Doctrine\Common\Collections\ArrayCollection;

/** 
 * @Entity (repositoryClass="Repositories\User") 
 */
class User extends Person
{

}

现在,我收到了这个错误:

Fatal error: Class 'Entities\Person' not found in C:\xamp\htdocs\Persons\application\m
odels\Entities\User.php on line 13

我不知道为什么会出现这个错误。我曾尝试以多种不同方式调用“Person”类,但它不起作用。任何的想法?谢谢!

1 个答案:

答案 0 :(得分:1)

在Zend Framework中运行时,您有一个自动加载器设置,可以动态地为您加载类。

当您从命令行运行Doctrine工具时,您没有可供使用的自动加载器。 Doctrine正在尝试加载需要Person的User类,但它(显然)并不知道如何加载Person。

我认为简单的解决方案是让require_once('Person.php');位于用户实体的顶部。对于ZF来说这可能是不必要的,但对Doctrine命令行工具很有帮助。