Полезные функции ООП в PHP
::class
Запись ClassName::class вернёт абсолютное имя класса ClassName. Это полезно при работе с классами, которые определили в пространстве имён
namespace NS {
class ClassName {}
}
$c = new ClassName();
print $c::class;
Nullsafe
К свойствам и методам можно обращаться через оператор NullSefe ?->
Оператор добавлен в PHP 8.0, предотвращает фатальную ошибку и последующую остановку выполнения при вызове метода или свойства со значением null
// Начиная с PHP 8.0.0 эта строка:
$result = $repository?->getUser(5)?->name;
// эквивалентна следующему блоку кода:
if (is_null($repository)) {
$result = null;
} else {
$user = $repository->getUser(5);
if (is_null($user)) {
$result = null;
} else {
$result = $user->name;
}
}
stdClass
stdClass - это простой универсальный "пустой класс", который используется при преобразовании объектов других типов
Объекты и ресурсы, которые хранятся в readonly-свойствах, по-прежнему получится изменить внутри:
class Test
{
public function __construct(public readonly object $obj) {}
}
$test = new Test(new stdClass());
$test1 = new stdClass();
// Правильное внутреннее изменение
$test->obj->foo = 1;
var_dump($test);
Источники
Связанные темы
Оператор разрешения видимости в php
Позднее статическое связывание
Методы создания экземпляра класса в php
Автоматическая загрузка классов
Наследование с помощью extends в php
Конструкторы и деструкторы в php