2017-11-23 8 views
0
<?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などの別々のファイルに入れることはできますか?Zend Framework 3で継承した教義のエンティティを自動読み込みする方法は?

+0

質問で明らかになっている2つの異なるファイルに間違いなく分割する必要があります。 –

答えて

1

プロジェクトに(例えば)PSR-4 (Autoloader)との互換性を持たせたい場合は、すべてのPHPクラスを独自のファイルに配置する必要があります。

PSR-4仕様から引用:

  • 完全修飾クラス名に対応するファイルをロード...

    1. 連続シリーズ少なくとも1つの "ベースディレクトリ"に対応する、完全修飾クラス名( "名前空間接頭辞")内の主要な名前空間区切り文字を含まない1つ以上の先頭の名前空間および部分的な名前空間名。
    2. 「名前空間プレフィックス」の後に続く連続したサブ名前空間名は、「ベースディレクトリ」内のサブディレクトリに対応し、名前空間区切り記号はディレクトリ区切り記号を表します。サブディレクトリ名は、サブ名前空間名の大文字と小文字を区別しなければならない(MUST)。
    3. 終了クラス名は、ファイル名が.phpで終わる名前に対応します。ファイル名は終端クラス名の大文字と一致しなければならない(MUST)。
  • あなたはMyProject\Model名前空間内のクラスPersonを作成するのであれば、オートローダは…/Model/Person.phpファイルでそれを見つけるでしょう。 Employeeクラスは、オートローダーで利用できるように別の…/Model/Employee.phpファイルに移動する必要があります。

    関連する問題