Анонимные классы
Анонимные классы - это классы, которые не имеют имени. Обычно такие классы полезны, если нам необходимо один раз создать объект подобного класса. И больше этот класс не будет использоваться:
$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>";
}
};
// Hello, Bob
echo "Hello, " . $person->name . "<br>";
При этом вызов конструктора идет сразу после ключевого слова class
до открывающей фигурной скобки:
new class("Bob")
.
Подобным образом можно определять свойства сразу в конструкторе, сократив тем самым определение класса:
<?
$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