[英]How to autoload inherited doctrine entity in Zend Framework 3?
<?php
namespace MyProject\Model;
/**
* @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
結尾的文件名。 文件名必須與終止類名的大小寫匹配。
因此,如果在MyProject\\Model
命名空間中創建類Person
,則自動加載器將僅在…/Model/Person.php
文件中找到它。 而且, Employee
類必須轉到單獨的…/Model/Employee.php
文件中,以供自動加載器使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.