Анонимные классы в PHP
Анонимные классы
Анонимные классы это классы которые не имеют имени
Анонимные классы нужны чтобы создать простые одноразовые объекты
Анонимные классы, как и обычные классы могут определять свойства и методы
Анонимные классы могут определять конструкторы
Анонимные классы могут расширять другие классы, реализовывать интерфейсы и использовать трейты как обычный класс
Вложение анонимного класса в другой класс не даёт ему доступ к закрытым или защищённым методам и свойствам этого внешнего класса
Для того, чтобы использовать защищённые свойства и методы внешнего класса, анонимный класс может расширить внешний класс. Чтобы использовать закрытые свойства внешнего класса в анонимном классе, их нужно передать в конструктор
class SomeClass {
private $prop1 = 2;
protected $prop2 = 3;
protected function func1()
{
return 3;
}
public function funcTest()
{
echo "test<br>";
}
}
interface SomeInterface {}
trait SomeTrait {
public function traitTest()
{
echo "testTrait<br>";
}
}
$testVar = new class("Ivan") extends SomeClass implements SomeInterface {
use SomeTrait;
public $name;
function __construct($name)
{
$this->name = $name;
echo $this->prop1 . "<br>"; # Не будет работать
echo $this->prop2 . "<br>";
}
public function sayHello() {
echo "Hello $this->name !
";
}
};
var_dump($testVar);
echo "<br>";
echo $testVar->name . "<br>";
$testVar->sayHello();
$testVar->funcTest();
$testVar->traitTest();
Источники
Связанные темы
Оператор разрешения видимости в php
Позднее статическое связывание
Методы создания экземпляра класса в php
Автоматическая загрузка классов
Наследование с помощью extends в php
Конструкторы и деструкторы в php