Inheritance 在Doctrine2中动态设置鉴别器
我有一个Inheritance 在Doctrine2中动态设置鉴别器,inheritance,doctrine-orm,discriminator,Inheritance,Doctrine Orm,Discriminator,我有一个Parent实体,它有两个子实体(Foo和Bar)实现单表继承 是否可以创建一个new Parent()实体并动态地将其鉴别器设置为foo,而不是创建一个new foo()?不,没有,如果您真的需要注释中提到的场景,那么使用某种工厂方法可能会更好: 抽象类MyParent { 公共静态函数fromString($type) { 交换机($类型){ 案例“foo”: 返回新的Foo(); “酒吧”一案: 返回新条(); } 抛出新的DomainException('未知类型:'。$type
Parent
实体,它有两个子实体(Foo
和Bar
)实现单表继承
是否可以创建一个new Parent()
实体并动态地将其鉴别器设置为foo
,而不是创建一个new foo()
?不,没有,如果您真的需要注释中提到的场景,那么使用某种工厂方法可能会更好:
抽象类MyParent
{
公共静态函数fromString($type)
{
交换机($类型){
案例“foo”:
返回新的Foo();
“酒吧”一案:
返回新条();
}
抛出新的DomainException('未知类型:'。$type);
}
}
不,这是不可能的,至少没有丑陋的黑客。为什么要这样做?我有一个场景,其中我得到一个表示鉴别器的字符串,我需要创建一个该类型的实体。我已经为此创建了一个方法,只是想知道是否有更好的方法..谢谢:)顺便问一下,为什么要声明类抽象?因为我假设只有子类会被实例化。但是如果父类也可以实例化,那么您可以删除abstract
关键字!