Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Анонимные классы PHP кратко

Лекция



Привет, Вы узнаете о том , что такое анонимные классы, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое анонимные классы , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .

Поддержка анонимных классов была добавлена в PHP 7. анонимные классы очень полезны, когда надо создать простой, одноразовый объект.

<?php

// До PHP 7
class Logger
{
    public function log($msg)
    {
        echo $msg;
    }
}

$util->setLogger(new Logger());

// PHP 7+
$util->setLogger(new class {
    public function log($msg)
    {
        echo $msg;
    }
});

Они могут передавать аргументы в конструкторы, расширять другие классы, реализовывать интерфейсы и использовать трейты как обычный класс:

<?php

class SomeClass {}
interface SomeInterface {}
trait SomeTrait {}

var_dump(new class(10) extends SomeClass implements SomeInterface {
    private $num;

    public function __construct($num)
    {
        $this->num = $num;
    }

    use SomeTrait;
});

Результат выполнения данного примера:

object(class@anonymous)#1 (1) {
  ["Command line code0x10ytfytfy":"class@anonymous":private]=>
  int(10)
}

Вложение анонимного класс в другой класс не дает ему доступ к приватным или защищенным методам и свойствам этого внешнего класса. Об этом говорит сайт https://intellect.icu . Для того, чтобы использовать защищенные свойства и методы внешнего класса, анонимный класс может расширить внешний класс. Чтобы использовать приватные или защищенные свойства внешнего класса в анонимном классе, они должны быть переданы через конструктор:

<?php

class Outer
{
    private $prop = 1;
    protected $prop2 = 2;

    protected function func1()
    {
        return 3;
    }

    public function func2()
    {
        return new class($this->prop) extends Outer {
            private $prop3;

            public function __construct($prop)
            {
                $this->prop3 = $prop;
            }

            public function func3()
            {
                return $this->prop2 + $this->prop3 + $this->func1();
            }
        };
    }
}

echo (new Outer)->func2()->func3();

Результат выполнения данного примера:

6

Все объекты, созданные одной и той же декларацией анонимного класса, являются объектами одного класса.

<?php
function anonymous_class()
{
    return new class {};
}

if (get_class(anonymous_class()) === get_class(anonymous_class())) {
    echo 'Тот же класс';
} else {
    echo 'Другой класс';
}

Результат выполнения данного примера:

Тот же класс

Замечание:

Обратите внимание, что анонимным классам присваиваются имена движком PHP, как показано в примере ниже. Это имя следует рассматривать как особенности реализации и не использовать в логике программы.

<?php
echo get_class(new class {});

Результатом выполнения данного примера будет что-то подобное:

class@anonymous/in/ohgfghfghf1

Информация, изложенная в данной статье про анонимные классы , подчеркивают роль современных технологий в обеспечении масштабируемости и доступности. Надеюсь, что теперь ты понял что такое анонимные классы и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Из статьи мы узнали кратко, но содержательно про анонимные классы
создано: 2017-07-03
обновлено: 2021-03-13
94



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)