Объектно-ориентированное программирование (ООП) в PHP
ООП — это сокращение от «объектно-ориентированное программирование». Это способ построить программу на PHP вокруг классов и объектов. У каждого из них есть собственные данные, называемые свойствами, и собственное поведение, называемое методами.
Такой подход окупается по мере роста проекта, потому что код остаётся проще масштабировать, повторно использовать и поддерживать.
Процедурный код, традиционная альтернатива, — это список шагов, которые PHP выполняет один за другим. С ООП ваша задача меняется: вы проектируете классы и объекты, а затем решаете, как они будут работать вместе.
Преимущества ООП
Почему стоит выбрать ООП, а не процедурный код? У него три главных преимущества:
- Ваша программа получает ясную, чётко определённую структуру
- Общая логика находится в одном месте, согласно идее DRY («Don't Repeat Yourself»), поэтому поддержка, изменение и отладка кода требуют меньше усилий
- Вы можете создавать полностью повторно используемые приложения, написав меньше кода и потратив меньше времени на разработку
Совет: DRY просто означает, что нужно избегать повторяющегося кода. Когда одна и та же логика нужна в нескольких частях приложения, вынесите её, держите в одном месте и используйте повторно оттуда.
Понятия ООП
ООП в PHP опирается на несколько идей, благодаря которым код остаётся модульным, повторно используемым и простым в поддержке:
- Классы и объекты — класс является шаблоном, а каждый объект — это отдельный экземпляр, созданный на его основе
- Инкапсуляция — модификаторы доступа (
public,protected,private) позволяют разработчикам решать, кому доступно внутреннее состояние объекта - Наследование — новый класс может перенять свойства и методы уже существующего класса
- Абстракция — абстрактный класс служит образцом для других классов, и его экземпляр нельзя создать сам по себе
- Интерфейсы — интерфейс перечисляет методы, которые обязан предоставить любой реализующий его класс
Что такое классы и объекты?
Объектно-ориентированное программирование держится на двух основных идеях: классах и объектах.
Представьте класс как шаблон. Объект — это отдельный экземпляр, созданный по этому шаблону.
Новый объект получает все свойства и методы, определённые в его классе, однако значения, хранящиеся в этих свойствах, у разных объектов различаются.