1

Doctrine2アプリケーションでクラスのコンストラクターを書いています。たとえば、Fruits、Apple、Bananasです。

Fruitsは親クラスです。ここで、はApplesフィールドで単一テーブル継承を使用して継承しBananasます。Fruitstype

Doctrine2のドキュメントページには、単一テーブル継承の例があります。単一テーブル継承を使用して常に識別している場合Fruits、識別フィールドは常に設定する必要があるため、基本クラスは抽象である必要がありますか?もしそうなら、この振る舞いを防ぐためにコンストラクターFruitsも保護する必要がありますか?

4

1 に答える 1

3

親クラス「Fruits」には再宣言する必要のあるメソッドがないため、抽象として宣言する必要があるとは思いません。

また、「Fruit」のインスタンスを永続化する必要があるユースケースを見つけることもできます(それがどのタイプの果物であるかは不明です)。親を抽象としてマークすると、これを行うことができなくなります。

たぶん果物は悪い例です。しかし、ドキュメントにあるPersonの例の方が優れています。従業員は個人の定義を継承します。しかし、タイプが特定されていない、Personのインスタンスだけを保持したい場合もあります。したがって、@DiscriminatorMapの"person"="Person"です。

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#single-table-inheritance

于 2012-05-11T13:22:37.577 に答える