現在、プロジェクトでストレージに依存しないパターンを使用しています。このパターンは非常に単純です。私Model\Model
と私の特定のストレージ レイヤーはModel\Model
( と のようEntity\Model
にDocument\Model
) 拡張されています。
私が直面している問題は、ポリモーフィック オブジェクトに関するものです。エンティティを拡張しないと、Doctrine は継承マッピングを認識しません。そのようにして、すべてのストレージ レイヤーに対してコードを複製する必要があります。
class Model\Option {}
class Model\OptionNumber extends Option {}
class Entity\Model extends Model\Option {}
私はを頂きたい:
class Entity\OptionNumber extends Model\OptionNumber{}
しかし、それは不可能です。PHP が多重継承をサポートしなくなったら、Entity\OptionNumber にコーディングする必要があります。
この問題を解決するパターンはありますか?
参考までに、Doctrine 2.2 と Symfony 2.3 を使用しています。
もちろん!
モデル:
abstract class Option implements OptionInterface
{
/**
* @var int
*/
protected $id;
/**
* @var string
*/
protected $name;
/**
* @var string
*/
protected $presentation;
/**
* @var Collection of OptionChoiceInterface
*/
protected $choices;
}
実在物:
class Option extends BaseOption
{
}
書類:
class Option extends BaseOption
{
}