Класс и объект в PHP OOП
ООП (объектно-ориентированное программирование) – это альтернативный подход в программировании на PHP, в пику процедурному способу. Однако не получится перескочить основы PHP, заложенные в процедурном методе и сразу начать изучать ООП. Вы должны уже понимать, что такое переменная, функция и другие базовые понятия.
Принципы ООП PHP
Принцип ООП заключается в самодостаточности отдельных кусков кода.
Понятие класса и объекта в ООП
Класс – это шаблон кода, с помощью которого создаются объекты. Авторы статей, пытаются объяснить понятие класса в ООП, приводя в пример машины, кошек и собак. Это классные примеры, но слишком далекие от реальных задач в программировании.
На мой взгляд очень удачное сравнение с анкетой. Класс это пустой бланк анкеты (образец), а заполненная анкета с личными данными реального человека - объект. Вот лежит этот образец в какой-нибудь конторе или на сайте. Пришло 100 человек и каждый из них, заполнил анкету (класс) со своими личными данными. Каждая новая заполненная анкета – новый объект.
Методы и свойства объекта
Чтобы объявить класс, пишут ключевое слово class и дают ему осмысленное название. Внутри класса описываются свойства и методы объекта. У анкеты есть поля (имя, фамилия, пол, возраст и.т.д), которые являются свойствами объекта (переменные).
class anketaExample
{
// свойства и методы объекта
}
Для создания объекта, пишем ключевое слово new и указываем имя класса, объект (экземпляр) которого хотим создать.
new anketaExample();
Что такое методы? В классическом понимании методы – это функции. Удалить, размножить, распечатать, переслать – все это методы объекта. Некий набор действий, которые можно проделывать с анкетой.
Любимый всеми авторами статей по ООП, пример объекта из реальной жизни – это кот. У кота есть свойства:
- порода
- кличка
- возраст
- цвет шерсти
Ещё котам присущи методы:
- спать
- гулять
- кушать
- мяукать
Но зачем создавать класс ради одного кота? А фишка в том, что свойства у всех котов одинаковые, а вот их значения разные. Ведь каждый кот индивидуален. По классу (шаблону) создаются разные объекты.
Пример в PHP ООП
Вернемся к нашей анкете и создадим класс anketaExample и перечислим названия полей анкеты (name, age, email, phone). Это и есть свойства. Перед каждым свойством нужно указать модификатор области видимости. Мы хотим, чтобы свойства были глобальными, поэтому добавим ключевое слово public. Это значит, что мы можем работать с заданными свойствами и вне класса anketaExample.
Присвоим свойствам значения, чтобы они не были пустыми.
class anketaExample
{
public $name = Max;
public $age = 40;
public $email = [email protected];
public $phone = 34533334;
}
Теперь создадим объект.
$user1 = new anketaExample();
На основе одного класса, объектов может создаваться много.
$user1 = new anketaExample();
$user2 = new anketaExample();
Для объекта $user2, переопределим значения у свойств.
$user2->name = 'Jack';
$user2->age = '25';
$user2->email = [email protected];
$user2->phone = 7543099;
Для вывода на странице данные анкеты первого пользователя (объект $user1), воспользуемся следующей конструкцией.
Имя: {$user1->name}
Возраст: {$user1->age}
Email: {$user1->email}
Телефон: {$user1->phone};
А что делать, если таких пользователей будет сотни или тысячи. Согласитесь, что такой вывод данных неоптимальный, и мы плавно переходим к методам объекта.
Методы объекта
У объекта анкета помимо свойств, ещё есть методы. Перед нами стоит задача выводить информацию о пользователях динамически, прописав код вывода только один раз. Для объявления метода пишем ключевое слово public, имя метода с круглыми скобками и внутри фигурных скобок, тело метода.
Внутри класса мы обращаемся к свойствам объекта через специальную конструкцию $this (этот), но не через сам объект $user1. Вот так неправильно и не имеет смысла:
{$user1->name}
Это важный и ключевой момент в понимании методов.
public function getAnketaInfo(){
Имя: {$this->name}
Возраст: {$this->age}
Email: {$this->email}
Телефон: {$this->phone};
}
Данный код выводит данные нужного пользователя.
echo $user1->getAnketaInfo();
echo $user2->getAnketaInfo();
Весь код целиком:
// создание класса
class anketaExample
{
public $name = Max;
public $age = 40;
public $email = [email protected];
public $phone = 34533334;
public function getAnketaInfo(){
Имя: {$this->name}
Возраст: {$this->age}
Email: {$this->email}
Телефон: {$this->phone};
}
}
// создание объекта класса
$user1 = new anketaExample();
$user2 = new anketaExample();
// вывод данных пользователя
echo $user1->getAnketaInfo();
echo $user2->getAnketaInfo();
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.