От автора: в чем состоит суть объектно-ориентированного программирования в PHP – вопрос, который повсеместно задают программисты, которые сталкиваются с данным подходом в первый раз. Поэтому в данном уроке мы с Вами попытаемся разобраться в данном вопросе.
Суть ООП в PHP, конечно достаточно сложная тема, осветить которую в рамках одной статьи довольно сложно. Так как полное понимание данного подхода, как правило, приходит с течением времени, то есть после того, как программист не только изучит теорию, но и закрепит ее на практике — на реальных примерах. То есть, другими словами, набравшись некого минимального опыта. Вообще объектно-ориентированное программирование, само по себе не сложное, сложность заключается в переустройстве мышления, так как практически все из нас, начинают свое обучение с процедурного подхода. И не подумайте, что это не правильно, это правильно и очень даже нужно, но вот потом изменить ход своих мыслей, для подхода ООП, уже сложно. К тому же, все усугубляется тем, что по большому счету, четкого определения объектно-ориентированного подхода нет. Поэтому давайте постепенно разбираться.
Итак, начнем с того что ООП — это способ разработки приложений, или же определенная философия программирования. И почему так спросите Вы, потому как суть объектно-ориентированного подхода на PHP, заключается как раз в том, что вместо того, что бы мыслить некими абстрактными вещами — мы начинаем оперировать реальными объектами, то есть начинаем думать определенными сущностями, которые участвуют в работе конкретной программы, или для которых она пишется.
Процедурный подход, который всем известен, конечно же, ни с какими сущностями не работает, так как весь код, который присутствует в программе, состоит из процедур и функций. То есть в указанном подходе, поставленная задача решается шаг за шагом, по четко заданному алгоритму и при этом в нужные моменты, при необходимости вызываются на исполнение некоторые функции.
Базовым же понятием ООП, является класс, который объединяет в себе определенный набор кода, или же действий (методов), и данные (свойства класса), которые, как правило, используются в методах. Класс, который и определяет суть объектно-ориентированного программирования на PHP, представляет собой, своеобразный чертеж — описание данных и необходимого функционала некой сущности. При этом класс – это нечто похожее на тип переменной. Переменная типа класса именуется экземпляром класса, или если сказать несколько проще, объектом. То есть, создавая класс, Вы не определяете объект, который будет использоваться для работы приложения. Вы создаете шаблон, на основе которого будет сформирован объект.
Содержимое класса – методы и свойства называются членами класса. При этом объект, как бы реализует конкретный описанный класс, а значит из одного класса можно создать сколько угодно объектов, функционал, которых будет определяться ничем иным, как классом. Но вот их состояние, может быть вполне разным, так как у каждого из них, значения свойств, могут быть уникальными.
Все выше сказано, можно рассмотреть на примере дома. Согласитесь, что перед постройкой дома, необходимо изобразить его на чертеже, и определиться с размерами, количеством комнат, разводкой трубопровода, количеством окон и дверей и т.д. То есть другими словами определить его полную структуру. Соответственно, чертеж – это и есть класс, определенной сущности, а значит — дома. Когда чертеж закончен, можно приступать к строительству будущего дома. Соответственно объект, который создан на основе класса — это законченный дом. Конечно, из одного чертежа можно создать множество домов (объектов) и все они будут похожи, но возможно, с определенными отличиями (разные значения свойств). К примеру, у них может быть разный цвет, разное количество окон, комнат и т.д.
Более того на основе главного чертежа, можно создать дополнительные чертежи, которые будут вносить существенные изменения, то есть дополнять или изменять структуру описанную в базовом шаблоне. Та же ситуация, и с классами, Вы можете создать класс, который будет наследовать функционал, определенного другого класса, и не просто наследовать, а вносить изменения, и расширять его возможности. При этом можно реализовать настоящую, четко определенную иерархию. Каждый класс, находящийся на нижних уровнях иерархии, будет обладать более четкой специализацией, чем расположенные выше классы. При этом так называемые, специализированные классы, очень часто называют производными или дочерними классами, а тот класс, который они расширяют — родительским.
Опять же если вернуться к предыдущему примеру, родительский класс может представлять дом, в свою очередь, здания, дополнительно подразделяются на жилые и коммерческие. Далее жилые здания делятся на малоэтажные и многоэтажные. И так далее. Но в любом случае родительский класс самого верхнего еще называют базовым классом.
Таким образом, когда реализуется иерархий классов, дочерний класс наследует свойства и методы, определенные в родительском классе. При этом если родительский достаточно универсален и самостоятельный, его можно повторно использовать для других проектов. Остается лишь написать код, адаптирующий новый производный класс к конкретной ситуации.
Собственно уже сейчас Вы, должны понять, что суть объектно-ориентированного языка программирования PHP, сводится не к простому, последовательному написанию кода, который выполнит конкретную задачу. А к реализации универсального кода, который привязан к определенной сущности, который, конечно же, решает поставленную задачу, но может быть использован многократно в других проектах, другими разработчиками, как основа, для построения других приложений.
Как Вы заметили, в данной статье абсолютно нет кода, потому как многие не понимают в чем суть ООП подхода в PHP, поэтому я попытался при помощи простых слов и примера из жизни пояснить данную тему, надеюсь, теперь Вам белее понятна данная тема. Более практически данная тема освещена, в последующих статьях и в премиум курсе по Объектно-ориентированному программированию на PHP.
На этом данная статья завершена. Всего Вам доброго.