Я хочу создать экземпляр анонимный класс через заводскую функцию. К сожалению, мой наивный подход выдает ошибку разбора Parse error: syntax error, unexpected 'class'
для последней строки:
class Foo {
static function factory() {
return new static;
}
}
(class extends Foo {})::factory();
Возможно ли что-то подобное? Или есть другой подход для достижения той же цели?
Два вопроса:
Вам нужно вернуть статический, используя new class()
синтаксис (то есть с фигурными скобками)
Вам также нужно сгенерировать анонимный класс с new
Код:
class Foo {
static function factory() {
return new static();
}
}
(new class extends Foo {})::factory();
Других решений пока нет …