Видимость переменных, особенно свойств и методов в объектно-ориентированном программировании, является ключевым понятием, имеющим большое значение для каждого разработчика. Особенно в PHP модификаторы видимости public, private и protected определяют, кто может получать доступ к определенным свойствам и методам. Эти концепции помогают реализовать инкапсуляцию данных, что делает объектно-ориентированные программы более надежными и удобными для обслуживания. В этом руководстве вы узнаете, как используются эти модификаторы и какое влияние они могут оказать на структуру вашего кода.
Основные выводы
- public: Свойства доступны отовсюду.
- private: Свойства доступны только внутри самого класса.
- protected: Свойства доступны внутри класса и в производных классах.
Пошаговое руководство
1. Создание простого класса с публичным свойством
Для начала создадим класс Автомобиль, в котором мы определим публичное свойство под названием Скорость. Это даст вам четкое представление о том, как вы можете получить доступ к этому свойству извне.

Теперь вы можете создать объект этого класса:

Если вы теперь установите скорость Автомобиля на 30, 50 или даже 130, у вас не будет никаких ограничений на доступ — это и есть сила публичной видимости.
2. Введение максимальной скорости с приватным свойством
Теперь добавим private свойство максимальная скорость и изменим метод так, чтобы он устанавливал только разрешенные скорости. Таким образом, вы можете убедиться, что назначаются только допустимые значения.
С помощью этого метода вы можете установить скорость и при этом гарантировать, что ошибка от слишком высоких значений не произойдет.

3. Использование методов Getter и Setter для приватных свойств
Поскольку максимальная скорость является приватной, вы можете получить к ней доступ только через методы внутри класса. Следующий пример демонстрирует, как реализовать методы Getter и Setter.

С помощью этих методов вы достигаете инкапсуляции и воздействия на свойства извне.

4. Понимание модификатора protected
Теперь давайте рассмотрим модификатор protected. Он предоставляет классам, которые наследуются от других классов, доступ к определенным свойствам. Это означает, что подклассы могут по-прежнему использовать или переопределять конкретный метод или свойство.

В этом случае гоночный автомобиль может получить доступ к защищенному свойству, тогда как внешние классы не могут. Это позволяет кодировать целевое поведение для производных классов.
5. Принятие решения о видимости
Важное решение, которое вам необходимо принять, касается видимости ваших свойств. В основном вы должны использовать private, если не очевидно, что свойство требуется в рамках наследования. В этом случае выберите protected.

Имейте в виду, что если вы находитесь на стадии обслуживания или работаете над новой функцией, вы всегда сможете изменить свои контроль доступа позже, если это станет необходимо.
Итоги — Видимость свойств: public, private и protected в PHP
Видимость свойств в PHP имеет решающее значение для понимания инкапсуляции данных и объектно-ориентированного программирования. С помощью модификаторов public, private и protected вы можете добиться точности и контроля над доступом к свойствам и методам в ваших классах. Правильное применение этих принципов значительно улучшает поддерживаемость и безопасность вашего кода.
Часто задаваемые вопросы
Что означает public в PHP?public означает, что свойство или метод доступны отовсюду.
Что означает private в PHP?private означает, что свойство или метод могут быть вызваны только из собственного класса.
Что означает protected в PHP?protected означает, что свойство или метод могут быть вызваны из собственного класса и из производных классов.
Когда мне следует использовать private?Вы должны использовать private по умолчанию, чтобы максимизировать видимость и контроль.
Когда я могу перейти на protected?Перейдите к protected, если свойство требуется внутри классов-наследников, и вы хотите предотвратить доступ извне.