В PHP 7 появилась новая функция класса, называемая анонимным классом, которая позволит нам создавать объекты без необходимости их именования. Анонимные классы могут быть вложенными. Что вы думаете о потреблении памяти, времени выполнения, проблемах производительности? Есть ли доступные метрики / статистика?
Анонимные классы — это классы без имен, объявленных программистом, в остальном они идентичны обычным классам.
Синтаксис позволяет им быть вложенными, как функции:
function name() {
function sub() {
}
}
Но так же, как приведенный выше код содержит две глобально доступные функции, следующий код по-прежнему содержит два глобально доступных класса:
class C {
function method () {
return new class{};
}
}
Это дает вам своего рода контроль над тем, где находится класс без труда доступны из, в этом смысле они являются вложенными.
Они не являются вложенными в том смысле, что анонимный класс, объявленный внутри другого класса, не может получить доступ ни к каким членам создаваемого класса.
Так что это:
class C {
private $member;
public function method() {
return new class {
public function method() {
return $this->member;
}
};
}
}
Недопустимо, потому что анонимный класс не является действительно вложенным.
Других решений пока нет …