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