<?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规范:
加载与完全合格的类名称相对应的文件时...
- 一个或多个领先的名称空间和子名称名称的连续系列,不包括主要命名空间分隔符,在完全限定的类名称("名称空间前缀")中对应于至少一个"基本目录"。
- "命名空间前缀"之后的连续子名称对应于"基本目录"中的子目录,其中命名空间分隔符代表目录分离器。子目录名称必须与子名称名称的情况匹配。
- 终止类名称对应于
.php
中结尾的文件名。文件名必须与终止类名称的情况匹配。
因此,如果您在MyProjectModel
名称空间中创建类Person
,则自动加载器将仅在…/Model/Person.php
文件中找到它。Employee
类必须转到一个单独的…/Model/Employee.php
文件才能适用于自动加载器。