Почему php добавляет нулевые байты к именам частных и защищенных свойств?
Я новичок в мире PHP и изучаю его у php.net . Я знаю, что при приведении объекта к массиву нулевой байт добавляется вокруг имен частных и защищенных свойств, когда Имя класса или ключ звездочки (*) добавляется к именам частных и защищенных свойств в ключах массива.
Но мой вопрос в том, что ПОЧЕМУ php добавляет нулевые байты В ЧЕМ причина?
Может ли кто-нибудь рассказать простыми и понятными словами.
Примеры очень поможет.
Спасибо
1 answers
Суть private
/protected
свойства заключаются в том, что вы не должны получать к ним доступ извне самого класса. Это не мера безопасности или что-то в этом роде, это для обеспечения соблюдения контрактов между различными частями вашего кода. Когда вы отмечаете что-то как private
/protected
, вы явно заявляете, что эта вещь не предназначена для широкого общественного потребления, и никакой внешний код не должен быть связан с ней.
В основном это напоминание для вас и других разработчиков, и в худшем случае это будет дайте вам легкий шлепок по запястью, если вы ослушаетесь этого маркера; это ни в коем случае не железная защита. Существует множество способов обойти это, например, с помощью отражения. Но, если бы было сделано слишком легко для доступа к этим частным частям, разработчики, вероятно, делали бы это слева и справа и отрицали бы весь смысл.
Поскольку эти свойства включаются в массив при приведении объекта к массиву, по крайней мере, не сразу понятно, как к ним получить доступ непосредственно из-за добавленных байтов NUL
. Если вы потратите время на то, чтобы выяснить, как получить к ним доступ, вы, надеюсь, действительно знаете, что делаете.
TL;DR: (я считаю) это минимальная попытка применить некоторые минимальные стандарты кодирования и не позволять новичкам нарушать все принципы ООП, как только они поймут, что такое приведение массива.