От автора: приветствую Вас дорогой друг. В данной статье мы с Вами поговорим о том, что такое класс ооп php. Так как это основа, понимание и умение работать с которой позволит Вам в полной мере овладеть объектно-ориентированным программированием на PHP.
В прошлой статье мы с Вами краткого рассмотрели понятие класс, значит давайте закрепим полученные знания и научимся работать с ними.
Итак, класс – это основа объектно-ориентированного программирования на PHP и по сути это контейнер для логически связанных данных (свойств) и функций (методов) для работы с ними. При этом класс – это еще и своеобразный тип данных, если говорить с точки зрения структуры скрипта. Данные, которые описаны в классе и логика работы с ними, как было сказано в предыдущей статье, обязательно относятся к определенной сущности, то есть некоторого определенного элемента будущей программы.
К примеру, если необходимо реализовать приложение для работы с пользователями и с написанными ими статьями, то, как минимум, необходимо описать два соответствующих класса. Конечно, никто не запретит Вам в одном классе описать весь функционал будущего приложения, но в этом случае в классе будет определено несколько сущностей (пользователи и статьи), что противоречит общей парадигме объектно-ориентированного программирования.
Если говорить более простым языком, то класс – это своего рода чертеж (повторяюсь из предыдущей статьи), к примеру, будущего дома. А значит дом – это отдельная сущность, с соответствующими свойствами – цвет, количество этажей, окон, размер и т.д (свойства класса). А тек же с определенными возможностями – открытие и закрытие окон и дверей, подача воды в санузлы и т.д (методы класса).
Помимо этого, классом в объектно-ориентированном программировании php является еще и шаблон кода, который используется для создания объектов, то есть объект – это уже реальное представление описанной в классе сущности, которая обладает указанным набором данных, а значит и соответствующими особенностями, и конечно же функционалом.
Создание класса ооп php начинается с ключевого слова class, за которым следует произвольное имя.
1 2 3 4 |
<?php class MyClass { } |
Имена классов могут состоять из любого сочетания букв и цифр, но замете, оно не когда не может начинаться с цифры. Код, который связан с классом, должен быть заключен в фигурные скобки.
Класс, который определен выше, вполне работоспособен, правда у него пока нет функционала, а значит полезность его ничтожна. Но хотел бы отметить, что классы подобного рода (без функционала) Вы часто будете встречать в своей практике при работе с различными библиотеками, но сейчас я не буду на этом останавливаться, так как это не тема текущей статьи.
Но это не полная структура класса ооп в php, так как класс должен обладать некоторыми особенностями и функционалом, соответственно у класса необходимо определить свойства и методы.
Свойства – это обычные переменные, объявленные внутри класса. При этом свойства, как правило, содержат данные, которые могут изменяться от одного объекта к другому. Свойства класса определяются точно также как и обычные переменные, за исключением того, что нужно добавить перед его именем, так называемый спецификатор доступа, который указывает область видимости.
1 2 3 4 5 6 |
<?php class MyClass { public $prop1 = ''; public $prop2 = 10; public $prop3 = TRUE; } |
В примере выше в класс MyClass, были добавлены три свойства — $prop1, $prop2, $prop3, каждому из которых было присвоено определенное начальное значение. А значит, все создаваемые объекты данного класса на данном этапе будут содержать начальные данные, определяемые созданными свойствами.
Методы – это функции, описанные в структуре класса и по большому счету описываются аналогично обычным пользовательским функциям. Единственно, как и для свойств, необходимо перед ключевым словом function указать спецификатор доступа.
1 2 3 4 5 6 |
<?php class Product { public function getProduct() { return TRUE; } } |
Более подробно свойства и методы класса будут рассмотрены в следующих статьях.
В данном уроке я очень кратко упомянул, что создаваемый класс может быть родителем для другого класса, соответственно дочерний класс получит от родителя свойства и методы описанные в нем. При этом родительский класс представляет собой определенный функционал, общий для всех его потомков (то есть что бы не повторяться, общие свойства и методы выносятся в родительский класс). А значит, объекты будут создаваться только для дочерних классов, а не для родителя.
Абстрактные классы в ооп php – это классы, для которых невозможно создать объект. Они всегда выступают родительскими классами для других, описывают общий функционал для своих потомков и, что очень важно, при правильной организации логики скрипта, задают определенный интерфейс доступа к инструментам класса.
1 2 3 4 5 6 7 8 |
<?php abstract class Product { protected $products = array ( ) ; public function getProduct() { return TRUE; } } |
В абстрактном классе Вы можете создавать необходимые методы и свойства, точно также как и в обычном, но любая попытка создать его экземпляр приведет к ошибке. Если же мы уже вспомнили абстрактные классы, существует такое понятие как абстрактный метод, который предполагает метод, но без реализации (без программного кода).
Конечно же, Вы спросите, зачем необходим данный метод, если пользы от него ноль. Суть в том что, данный метод будет обязательно переопределен в дочернем классе, то есть в данном классе будет создан одноименный метод, но уже с конкретным кодом (функционалом). Более подробно данная тема будет освещена в следующих статьях.
Теперь Вы знаете, что такое классы ООП подхода php, а значит данную статью можно завершать. Всего Вам доброго и удачного кодирования!