Сегодняшняя (очень короткая) сказка на ночь посвящена небольшой, но действительно важной характеристике ключевых слов для видимости PHP: частный и защищенный.
Вот оно:
Вы можете получить доступ к закрытым и защищенным методам и атрибутам других объектов! Да, вы правильно прочитали. И я не говорю о магии отражения. Процитируем документацию по PHP:
Объекты одного типа будут иметь доступ к частным и защищенным членам друг друга, даже если они не являются одними и теми же экземплярами.
Что это значит для нас, простых смертных?
Частный и защищенный видимость находится на уровне класса, а не на уровне экземпляра.
Итак, можно создавать такие методы:
Хорошо, а есть ли это в реальной жизни? Конечно!
Я нашел очень полезным то, что мы можем создать именованный статический конструктор, который устанавливает для нас частные атрибуты:
Как вы можете видеть выше, мы можем установить частный атрибут $url
без сеттера, а также мы можем создать экземпляр, даже если у нас есть частный конструктор.
На сегодня все! Доброй ночи!
P.S. Кстати, начиная с PHP 7.4, есть еще одна уловка для доступа к закрытым и защищенным атрибутам помимо отражения - знаете ли вы, как это можно сделать? Дай мне знать в комментариях!