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