php 7 — Почему php добавляет нулевые байты к именам закрытых и защищенных свойств?

Я новичок в мире PHP и изучаю его php.net. Я знаю, что при приведении объекта к массиву нулевой байт добавляется вокруг имен закрытых и защищенных свойств, когда ИмяКласса или же звездочка (*) добавляется к частным и защищенным именам свойств в ключах массива.

Но мой вопрос в том, что ЗАЧЕМ php добавить нулевые байты КАКИЕ это причина?

Может ли кто-нибудь сказать простыми и легкими словами.

Примеры очень помогут.

Спасибо

2

Решение

Точка private/protected Свойства в том, что вы не должны обращаться к ним извне самого класса. Это не мера безопасности или что-то в этом роде, а обеспечение соблюдения контрактов между различными частями вашего кода. Когда вы отмечаете что-то как private/protectedВы явно заявляете, что эта вещь не предназначена для общего публичного потребления, и с ней не должен быть связан внешний код.

Это в основном напоминание для вас и других разработчиков и в худшем случае даст вам легкую пощечину, если вы не повиноваетесь этому маркеру; это не железная защита любыми средствами. Есть несколько способов обойти это, например используя отражение. Но, если это было сделано слишком легко чтобы получить доступ к этим частным частям, разработчики, вероятно, будут делать это влево и вправо и отрицать всю суть.

Так как эти свойства включаются в массив при приведении объекта к массиву, по крайней мере, не сразу понятно, как получить к ним доступ напрямую из-за добавления NUL байт. Если вы потратите время, чтобы выяснить, как получить к ним доступ, вы, надеюсь, действительно знаете, что делаете.

TL; DR: (я полагаю) это минимальная попытка применить некоторые минимальные стандарты кодирования и не позволить новичкам нарушать все принципы ООП, когда они выяснят, что такое приведение массива.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]