如何在Zend Framework 3中自动加载遗传的学说实体


<?php
namespace MyProjectModel;
/**
 * @Entity
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="discr", type="string")
 * @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
 */
class Person
{
    // ...
}
/**
 * @Entity
 */
class Employee extends Person
{
    // ...
}

如何为上述学说实体继承定义自动加载?或者我们可以将每个实体放在单独的文件中,例如entity person.php,employee person.php?

如果您希望项目与(例如)PSR-4(AutoLoader)兼容,则应将每个PHP类放在其自己的文件中。

引用PSR-4规范:

  1. 加载与完全合格的类名称相对应的文件时...

    1. 一个或多个领先的名称空间和子名称名称的连续系列,不包括主要命名空间分隔符,在完全限定的类名称("名称空间前缀")中对应于至少一个"基本目录"。
    2. "命名空间前缀"之后的连续子名称对应于"基本目录"中的子目录,其中命名空间分隔符代表目录分离器。子目录名称必须与子名称名称的情况匹配。
    3. 终止类名称对应于.php中结尾的文件名。文件名必须与终止类名称的情况匹配。

因此,如果您在MyProjectModel名称空间中创建类Person,则自动加载器将仅在…/Model/Person.php文件中找到它。Employee类必须转到一个单独的…/Model/Employee.php文件才能适用于自动加载器。

相关内容

  • 没有找到相关文章

最新更新