ООП
Что это?
Зачем нужно?
Инкапсуляция
Что это?
Один из фундаментальных принципов ООП. Инкапсуляция предполагает объединение данных (атрибутов) и методов (функций), которые работают с этими данными, в единое целое (класс). Ключевая идея - скрыть внутреннюю реализацию класса и предоставить доступ к данным только через определенные методы (интерфейс).
Зачем нужно?
Безопасность: Защищает данные от несанкционированного доступа и изменений. Данные можно изменять только через специально разработанные методы (геттеры и сеттеры). Гибкость: Позволяет изменять внутреннюю реализацию класса, не затрагивая код, который использует этот класс (если интерфейс остается прежним). Модульность: Облегчает поддержку и понимание кода, так как логика класса изолирована. Как реализуется в PHP: Использование модификаторов доступа ( public, private, protected ): public: Доступ к атрибуту/методу из любого места. private: Доступ только внутри класса. protected: Доступ внутри класса и в классах-наследниках. Геттеры и сеттеры (методы для получения и установки значений приватных атрибутов).
Полиморфизм:
Что это?
Способность объектов разных классов реагировать на один и тот же вызов метода по-разному. Позволяет использовать объекты разных классов взаимозаменяемо. Существуют два основных типа полиморфизма: Полиморфизм подтипов (subtype polymorphism): Объекты подклассов могут использоваться там, где ожидаются объекты родительского класса (благодаря наследованию). Параметрический полиморфизм (parametric polymorphism): Применение обобщенного кода, который может работать с различными типами данных (например, generics - в PHP реализовано через @template).
Зачем нужно?
Гибкость: Позволяет легко расширять функциональность без изменения существующего кода. Переиспользование кода: Позволяет писать более обобщенный код, который может работать с разными типами объектов. Упрощение: Упрощает код, позволяя работать с объектами как с единым интерфейсом, независимо от их конкретного класса. Как реализуется в PHP: Наследование и переопределение методов (method overriding): Подкласс переопределяет метод родительского класса, предоставляя свою реализацию. Интерфейсы: Классы реализуют интерфейсы, определяя набор методов, которые они должны реализовать.
Абстракция:
Что это?
Процесс выделения только существенных характеристик объекта, игнорируя несущественные детали. Основа для разработки более простых в использовании интерфейсов. Абстракция может быть реализована через абстрактные классы и интерфейсы.
Зачем нужно?
Упрощение: Упрощает понимание и использование сложных систем, скрывая детали реализации. Гибкость: Позволяет изменять реализацию, не затрагивая код, который использует абстрактный объект (если интерфейс остается прежним). Переиспользование кода: Позволяет создавать обобщенные интерфейсы и классы, которые могут использоваться в разных контекстах.
Как реализуется в PHP:
Абстрактные классы: Классы, которые не могут быть созданы напрямую (используются только как родительские классы). Они могут содержать абстрактные методы (методы без реализации, которые должны быть реализованы в подклассах). Интерфейсы: Полностью абстрактные классы, которые определяют только интерфейс (набор методов), без реализации.