Анонимные классы — это классы, которые не имеют имени. Обычно такие классы полезны, если нам необходимо один раз создать объект подобного класса. И больше этот класс не будет использоваться. Например:

$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


Источники:

(1) https://metanit.com/php/tutorial/6.6.php

Tags

Нет Ответов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Рубрики


Подпишись на новости
👋

Есть вопросы?