Защищенные от PHP классы и свойства, защищенные от кого?

Я только начинаю с OOP PHP с объектно-ориентированными решениями PHP Дэвидом Пауэрсом, и мне немного любопытно понятие защиты в ООП.

Автор ясно объясняет, как работает защита, но бит о том, что другие люди не могут изменять свойства, немного плоский. Мне трудно представить себе ситуацию, когда это возможно, чтобы другие люди не могли изменять ваши классы, поскольку они могли бы просто открыть ваш class.php и вручную настроить все, что им class.php видеть, как PHP всегда находится в обычном тексте.

Осторожно: все вышеперечисленное написано новичком с пониманием новичком программирования.

    От себя!

    Вы используете различные уровни защиты, чтобы указать, как вы хотите, чтобы класс использовался. Если член класса protected или private , доступ к нему может получить только сам класс. Нет никакого шанса, что вы случайно можете испортить значение этого члена из «внешнего» кода (код вне класса).

    Скажем, у вас есть член класса, который должен содержать только цифры. Вы protected его и добавляете сеттер, который проверяет, что его значение может быть только числовым:

     class Foo { protected $num = 0; public function setNum($num) { if (!is_int($num)) { throw new Exception('Not a number!!!'); } $this->num = $num; } } 

    Теперь вы можете быть уверены, что Foo::$num всегда будет содержать число, когда вы хотите работать с ним. Вы можете пропустить много дополнительного кода проверки ошибок, когда хотите его использовать. Каждый раз, когда вы пытаетесь присвоить ему что-либо, кроме номера, вы получите очень громкое сообщение об ошибке, из-за чего очень легко найти ошибки.

    Это ограничение, которое вы ставите на себя, чтобы облегчить свою работу. Потому что программисты делают ошибки. Особенно динамически типизированные языки, такие как PHP, позволяют вам без лишних ошибок делать много ошибок, не замечая, что очень сложно отлаживать, и очень серьезные ошибки позже.

    По самой своей сути программное обеспечение очень мягко и легко деградирует в непостижимую логическую машину Rube Goldberg. OOP, инкапсуляция, модификаторы видимости, тип hinting и т. Д. – это инструменты, которые PHP дает вам сделать ваш код «сложнее», чтобы выразить ваше намерение, что вы хотите, чтобы определенные части вашего кода были, и позволить PHP применять это намерение для вас.

    Защищенный на самом деле не защищает от кого-либо, чтобы изменить исходный код, но это просто видимость метода класса в PHP OOP

    К членам класса, объявленным публичными, можно получить доступ во всех странах. Доступ к элементам, объявленным защищенными, может быть доступен только внутри самого класса и наследуемых и родительских классов. Участникам, объявленным как private, может быть доступен только класс, определяющий участника.

    Они означают, что они защищены по-разному …

    • Частные переменные не видны нигде, кроме класса.
    • Защищенные переменные не видны экземпляру объекта, но видны классам, которые наследуются от этого класса, а также самому классу.

    Ничто не останавливает другого программиста от открытия файла класса и изменения модификаторов доступа.

    Скрытие данных – это хорошо, потому что чем меньше вы раскрываете, тем больше вы можете контролировать и меньше ошибок, которые вы можете представить.