Пояснение к моей задаче на канале PHP задачи с собеседований.
Метод
Интересно, что вызов магических методов для неинициализированных свойств изначально был предусмотрен в RFC: Typed Properties 2.0 и имплементирован в
Чтобы всё-таки стриггерить
Пара статей про ленивую инициализацию свойств:
• https://ocramius.github.io/blog/intercepting-public-property-access-in-php/,
• https://ocramius.github.io/blog/lazy-property-automatic-property-initialization/.
Метод
__get()
выполняется при попытке чтения из недоступных (защищённых или приватных) или несуществующих свойств. Публичное неинициализированное типизированное свойство таковым не является.Интересно, что вызов магических методов для неинициализированных свойств изначально был предусмотрен в RFC: Typed Properties 2.0 и имплементирован в
7.4.0
. Однако после обсуждения различных WTF кейсов этот функционал был удалён в 7.4.1
.Чтобы всё-таки стриггерить
__get
, __set
, __isset
или __unset
для типизированного свойства, необходимо сначала "удалить" его через unset
: https://3v4l.org/RbFFM.Пара статей про ленивую инициализацию свойств:
• https://ocramius.github.io/blog/intercepting-public-property-access-in-php/,
• https://ocramius.github.io/blog/lazy-property-automatic-property-initialization/.