Классы только для чтения

Классы только для чтения в PHP позволяют определять классы, свойства которых по умолчанию доступны только для чтения

    Классы только для чтения

    Начиная с php8.2 классы можно пометить модификатором readonly, что добавит readonly к каждому объявленному свойству и не разрешит создавать динамические свойства

    readonly class Foo {}

    В классах только для чтения нельзя объявлять нетипизированные и статические свойства, поскольку такие свойства нельзя помечать модификатором readonly
    Чтобы создать экземпляр класса, который определили в пространстве имён, требуется указывать абсолютное имя класса


    Пример новых объектов, которые создали через произвольные выражения
    Пример показывает варианты допустимых произвольных выражений, которые представляют имя класса. Пример вызова функции, конкатенации строк и константы ::class
    Источник: https://www.php.net/manual/ru/language.oop5.basic.php

    class ClassA extends \stdClass {} class ClassB extends \stdClass {} class ClassC extends ClassB {} class ClassD extends ClassA {} function getSomeClass(): string { return 'ClassA'; } echo getSomeClass(); echo "<br>"; var_dump(new (getSomeClass())); echo "<br>"; var_dump(new ('Class' . 'B')); echo "<br>"; var_dump(new ('Class' . 'C')); echo "<br>"; #SomeClass::class вернет полное имя SomeClass включая пространство имен. Эта функция была реализована в PHP 5.5 var_dump(new (ClassD::class));
    Источники
    Последнее изменение: 07.11.2024 22:28


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ