Ответ
Анонимные классы в PHP — это классы, объявляемые и инстанцируемые одновременно, без явного объявления имени. Они полезны для создания одноразовых объектов, особенно в тестах или для реализации простых интерфейсов на лету.
Основные особенности:
- Отсутствие имени: Доступны только через переменную, в которую был присвоен объект.
- Конструктор: Могут принимать аргументы.
- Наследование и реализация интерфейсов: Могут наследоваться от другого класса (
extends) и/или реализовывать интерфейсы (implements). - Область видимости: Поддерживают все модификаторы доступа (
public,protected,private).
Пример создания с аргументом и реализацией интерфейса:
interface LoggerInterface {
public function log(string $message): void;
}
$logger = new class('app.log') implements LoggerInterface {
public function __construct(private string $logFile) {}
public function log(string $message): void {
file_put_contents($this->logFile, $message . PHP_EOL, FILE_APPEND);
}
};
$logger->log('Событие запуска');
Пример для тестирования (мок-объект):
// Вместо создания полноценного мок-класса
$mockService = new class extends SomeService {
public function process(): bool {
return true; // Заглушка для теста
}
};
Их стоит использовать умеренно, так как чрезмерное применение может усложнить чтение кода и навигацию по нему.