如何创建多态不可知模型?

时间:2013-03-25 03:12:14

标签: php design-patterns symfony doctrine

目前我在项目中使用存储不可知模式。这种模式非常简单:我的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
{
}

0 个答案:

没有答案