簡體   English   中英

如何在Zend Framework 3中自動加載繼承的教義實體?

[英]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規范:

  1. 加載與完全限定的類名相對應的文件時…

    1. 在完全限定的類名(“名稱空間前綴”)中,一個或多個開頭的名稱空間和子名稱空間名稱(不包括開頭的名稱空間分隔符)的連續序列對應於至少一個“基本目錄”。
    2. “名稱空間前綴”之后的連續子名稱空間名稱對應於“基本目錄”內的子目錄,其中名稱空間分隔符表示目錄分隔符。 子目錄名稱必須與子命名空間名稱的大小寫匹配。
    3. 終止類名對應於以.php結尾的文件名。 文件名必須與終止類名的大小寫匹配。

因此,如果在MyProject\\Model命名空間中創建類Person ,則自動加載器將僅在…/Model/Person.php文件中找到它。 而且, Employee類必須轉到單獨的…/Model/Employee.php文件中,以供自動加載器使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM