Лекция
Привет, Вы узнаете о том , что такое анонимные классы, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое анонимные классы , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера 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)
Из статьи мы узнали кратко, но содержательно про анонимные классы
Комментарии
Оставить комментарий
Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)