Суть свойств private
/protected
в том, что вы не должны получать к ним доступ извне самого класса. Это не мера безопасности или что-то в этом роде, это обеспечение соблюдения контрактов между различными частями вашего кода. Когда вы помечаете что-то как private
/protected
, вы явно заявляете, что эта вещь не предназначена для общего пользования и что с ней не должен быть связан внешний код.
В основном это напоминание для вас и других разработчиков, и в худшем случае вы получите легкий шлепок по запястью, если вы не подчинитесь этому маркеру; это ни в коем случае не железная защита. Есть множество способов обойти это, например. используя Отражение. Но, если сделать доступ к этим закрытым частям слишком простым, разработчики, вероятно, будут делать это направо и налево и сведут на нет весь смысл.
Поскольку эти свойства включаются в массив при приведении объекта к массиву, по крайней мере, не сразу становится очевидным, как получить к ним прямой доступ из-за добавленных NUL
байтов. Если вы потратите время, чтобы выяснить, как получить к ним доступ, вы, надеюсь, действительно знаете, что делаете.
TL;DR: (я полагаю) это минимальная попытка попытаться обеспечить соблюдение некоторых минимальных стандартов кодирования и не позволить новичкам нарушать все принципы ООП, когда они выяснят, что такое приведение массива.
person
deceze♦
schedule
18.08.2017