Вызов фабричной функции анонимного класса

Я хочу создать экземпляр анонимный класс через заводскую функцию. К сожалению, мой наивный подход выдает ошибку разбора Parse error: syntax error, unexpected 'class' для последней строки:

class Foo {
static function factory() {
return new static;
}
}
(class extends Foo {})::factory();

Возможно ли что-то подобное? Или есть другой подход для достижения той же цели?

1

Решение

Два вопроса:

  1. Вам нужно вернуть статический, используя new class() синтаксис (то есть с фигурными скобками)

  2. Вам также нужно сгенерировать анонимный класс с new

Код:

class Foo {
static function factory() {
return new static();
}
}
(new class extends Foo {})::factory();
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector