Что такое readonly свойства?
Readonly свойства в языке программирования PHP были внедрены в версии 8.1 и представляют собой специальный инструмент для создания неизменяемых свойств классов. Объявление такого свойства происходит с добавлением ключевого слова readonly перед модификатором доступа и типом данных, например: readonly public string с именем.
Главное правило работы с readonly свойствами заключается в том, что значение в такое свойство может быть записано ровно один раз. Как только значение было инициализировано в процессе выполнения кода, любые попытки перезаписать его приведут к генерации фатальной ошибки PHP.
В последующей версии PHP 8.2 разработчики расширили эту концепцию, добавив возможность объявлять readonly целые классы. Если класс помечен как readonly, то абсолютно все свойства этого класса автоматически становятся доступными только для чтения, что избавляет от необходимости прописывать это ключевое слово для каждого поля по отдельности.
Основной целью внедрения readonly свойств является активная поддержка концепции immutable объектов. Такие объекты гарантированно не меняют свое внутреннее состояние после создания, что критически важно для надежности сложных архитектурных решений, многопоточных сред и доменных моделей.
Использование неизменяемых свойств значительно упрощает отладку приложений и анализ кода, так как вы всегда точно знаете, что состояние объекта останется неизменным на протяжении всего жизненного цикла после его успешной инициализации в конструкторе.