0

現在、プロジェクトでストレージに依存しないパターンを使用しています。このパターンは非常に単純です。私Model\Modelと私の特定のストレージ レイヤーはModel\Model( と のようEntity\ModelDocument\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
{
}
4

0 に答える 0