Анонимные классы - это классы, которые не имеют имени. Обычно такие классы полезны, если нам необходимо один раз создать объект подобного класса. И больше этот класс не будет использоваться. Например:
$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