Анонимные классы — это классы, которые не имеют имени. Обычно такие классы полезны, если нам необходимо один раз создать объект подобного класса. И больше этот класс не будет использоваться. Например:
$person = new class {};
Для определения переменной аонимного класса, как в случае с обычным классом применяется оператор new, после которого идет ключевое слово class и затем — тело класса в фигурных скобках.
Анонимные классы, как и обычные классы могут определять свойства и методы. Например:
$person = new class { public $name; function sayHello(){ echo "Hello!<br>"; } }; $person->sayHello(); $person -> name = "Sam"; echo "Name: " . $person -> name . "<br>";
Вывод:
Hello!
Name: Sam
Также анонимные классы могут определять конструкторы:
$person = new class("Bob") { public $name; function __construct($name) { $this->name = $name; } function sayHello(){ echo "Hello!<br>"; } };
Вывод:
echo "Hello, " . $person -> name . "<br>"; // Hello, Bob
При этом вызов конструктора идет сразу после ключевого слова class до открывающей фигурной скобки: new class("Bob") {
Подобным образом можно определять свойства сразу в конструкторе, сократив тем самым определение класса:
<?php $person = new class("Bob", 34) { function __construct(public $name, public $age) { $this->name = $name; } function displayInfo() { echo "Name: $this->name; Age: $this->age<br>"; } }; $person -> displayInfo(); ?>
Вывод:
Name: Bob; Age: 34
Источники:
Нет Ответов