我想通过工厂函数实例化anonymous class。可悲的是,我的天真方法会在最后一行抛出一个解析错误Parse error: syntax error, unexpected 'class'
:
class Foo {
static function factory() {
return new static;
}
}
(class extends Foo {})::factory();
这样的事情可能吗?或者是否有其他方法可以达到同一目标?
答案 0 :(得分:1)
两个问题:
您需要使用new class()
语法(即使用大括号)返回静态
您还需要使用new
代码:
class Foo {
static function factory() {
return new static();
}
}
(new class extends Foo {})::factory();