Объектно-ориентированный подход в PHP для начинающих. Часть 1
Многим PHP-программистам объектно-ориентированное программирование кажется пугающим, изобилующим запутанным синтаксисом и другими сложностями.
Данный материал поможет Вам понять общие концепции, стоящие за объектно-ориентированным программированием и стиль написания кода, при котором сходные действия группируются в классы.
Именно это позволяет писать более компактный и эффективный код.
Понимание Объектно-Ориентированного Программирования (ООП)
ООП - это стиль написания кода, который позволяет разработчикам группировать сходные задачи в классы. Это помогает коду соответствовать так называемому принципу DRY (Don't Repeat Yourself - Не повторяйте сами себя) и быть легким с точки зрения модификации и доработки.
Если говорить кратко, то данный принцип означает, что каждая частица знания должна иметь единственное и однозначное представление в системе. Когда такой принцип реализуется грамотно, то модификация какой-либо части системы не приводит к тому, что приходится переделывать чуть-ли не все остальное.
Одно из главных преимуществ применения принципа DRY состоит в том, что при изменении какой-либо информации в Вашей системе, как правило, приходится править код только в каком-то одном месте.
Один из кошмаров веб-разработчиков - это поддержка кода, в котором происходит многократное объявление информации, что приводит к тому, что любое изменение в программе становится огромной головной болью из-за необходимости поиска дублирующихся данных и функционала.
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
ООП страшит многих разработчиков из-за того, что вводит новый синтаксис и, на первый взгляд, кажется гораздо более сложным делом, нежели простое процедурное кодирование. Однако, после более плотного знакомства с ним, многие соглашаются, что ООП не так сложно, как кажется, и является более продуктивным подходом к написанию кода.
Понимание Объектов и Классов
Прежде чем переходить непосредственно к ООП, необходимо иметь базовое понимание того, что такое объект, и что такое класс. Сейчас мы рассмотрим, как создаются классы, их возможности и некоторые из способов их использования.
Понимание отличия объектов от классов
Действительно, существует определенная путаница. Многие опытные разработчики используют эти два слова как взаимозаменяемые понятия, что зачастую очень путает новичков и портит им немало нервных клеток.
Класс, к примеру, подобен плану дома. Он определяет конфигурацию и устройство дома на бумаге. На плане могут быть представлены все детали внутреннего устройства дома, хотя в действительности самого этого дома еще не существует.
Объект же - это уже построенный по данному плану дом. Данные, хранящиеся в объекте, можно сравнить с бетоном, арматурой и деревом, из которых возводится дом. Не будучи собранными в соответствии с планом, все эти материалы являются просто кучей вещей. Однако, когда они собираются все вместе по определенным правилам, то организуются в полезную вещь - дом.
Классы формируют структуру данных и действий и используют эту информацию для создания объектов.
Понятно, что используя один и тот же план дома, его можно построить сколько угодно раз на разных улицах и в любых точках мира. Точно так же и на основании одного класса можно создать несколько объектов, которые совершенно не зависят друг от друга.
Структура Класса
Синтаксис создания класса вполне самоочевиден: объявляем класс, используя ключевое слово, а за ним следует само название класса с фигурными скобками:
<?php
class MyClass
{
// Здесь идут свойства и методы класса
}
?>
После создания класса можно создать новый объект, используя ключевое слово new, и сохранить его в переменную:
$obj = new MyClass;
Для того, чтобы увидеть содержимое объекта, используйте функцию var_dump():
var_dump($obj);
Создайте новый php-файл с произвольным именем и посмотрите, как это работает, воспользовавшись следующим блоком кода:
<?php
class MyClass
{
// Здесь идут свойства и методы класса
}
$obj = new MyClass;
var_dump($obj);
?>
Обратитесь к созданному Вами файлу, и на экране должна появиться следующая строка:
object(MyClass)#1 (0) { }
Отлично. Ваш первый простейший скрипт а-ля "Hello, World" готов. Но пользы от него совершенно никакой, поэтому двигаемся дальше.
— Разгрузит мастера, специалиста или компанию;
— Позволит гибко управлять расписанием и загрузкой;
— Разошлет оповещения о новых услугах или акциях;
— Позволит принять оплату на карту/кошелек/счет;
— Позволит записываться на групповые и персональные посещения;
— Поможет получить от клиента отзывы о визите к вам;
— Включает в себя сервис чаевых.
Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе
Объявление Свойств Класса
Для добавления в класс информации используются свойства (по сути это переменные, относящиеся к данному конкретному классу). Они работают точно так же, как и обычные переменные, за исключением того, что они имеют привязку к объекту и, следовательно, доступ к ним можно получить только через объект.
Для того, чтобы добавить свойство в класс MyClass, внесите следующий код в скрипт:
<?php
class MyClass
{
public $prop1="Я - свойство класса!";
}
$obj = new MyClass;
var_dump($obj);
?>
Ключевое слово public определяет так называемую "область видимости" свойства. Об этом мы поговорим позже в процессе изучение основ объектно-ориентированного программирования. Далее свойству дается имя, при этом используется стандартный синтаксис PHP и ему (свойству) присваивается значение (надо заметить, что свойствам в классе не обязательно иметь начальное значение).
Для того, чтобы получить значение свойства и вывести его на экран, нужно указать объект, к которому оно относится, и само свойство:
echo $obj->prop1;
Поскольку одновременно могут существовать несколько экземпляров класса (как, например, несколько домов, построенных по одному плану), то нужно явно указывать, с каким объектом мы работаем, иначе скрипт не сможет определить, свойство какого объекта нужно получить.
Знак "->" является специальной конструкцией, которая позволяет получить доступ к свойствам или методам данного объекта.
Измените скрипт, чтобы получить значение свойства, таким образом:
<?php
class MyClass
{
public $prop1="Я - свойство класса!";
}
$obj = new MyClass;
echo $obj->prop1; // Выводим значение свойства
?>
Обновите страницу и Вы получите следующий результат:
Я - свойство класса!
Объявление Методов Класса
Методы - это функции, относящиеся к конкретному классу. Отдельные действия, которые способен будет производить объект, внутри класса называются методами.
К примеру, для создания методов, которые будут задавать и получать значение свойства $prop1, нужно изменить код таким образом:
<?php
class MyClass
{
public $prop1="Я - свойство класса!";
public function setProperty($newval) // функция для задания значения свойства
{
$this->prop1 = $newval;
}
public function getProperty() // функция для получения значения свойства
{
return $this->prop1 . "<br />";
}
}
$obj = new MyClass;
echo $obj->prop1;
?>
Заметьте: ООП позволяет объектам ссылаться на самих себя, используя конструкцию $this. Когда Вы работаете с методом, используйте $this таким же образом, как когда Вы используете имя объекта за пределами класса.
Для использования методов, просто вызывайте их как обычные функции, указывая сперва, к какому объекту они относятся.
Получим значение свойства с помощью метода getProperty(), затем изменим его с помощью метода setProperty() и снова получим значение уже измененного свойства:
<?php
class MyClass
{
public $prop1="Я - свойство класса!";
public function setProperty($newval)
{
$this->prop1 = $newval;
}
public function getProperty()
{
return $this->prop1 . "<br />";
}
}
$obj = new MyClass;
echo $obj->getProperty(); // Получаем значение свойства
$obj->setProperty("Я - измененное свойство класса!"); // Устанавливаем новое значение свойства
echo $obj->getProperty(); // Получаем снова значение уже измененного свойста
?>
Обновите страницу в браузере и Вы увидите две строки:
Я - свойство класса! Я - измененное свойство класса!
"Мощь ООП становится очевидной при использовании нескольких экземпляров одного и того же класса."
<?php
class MyClass
{
public $prop1="Я - свойство класса!";
public function setProperty($newval)
{
$this->prop1 = $newval;
}
public function getProperty()
{
return $this->prop1 . "<br />";
}
}
// Создаем два объекта
$obj = new MyClass;
$obj2 = new MyClass;
// Получаем значение свойства $prop1 из обоих объектов
echo $obj->getProperty();
echo $obj2->getProperty();
// Устанавливаем новые значения свойства для обоих объектов
$obj->setProperty("Я - новое свойство класса!");
$obj2->setProperty("Я принадлежу второму экземпляру класса!");
// Выводим значения свойства $prop1 для обоих объектов
echo $obj->getProperty();
echo $obj2->getProperty();
?>
Обновите страницу и Вы увидите следующий результат:
Я - свойство класса! Я - свойство класса! Я - новое свойство класса! Я принадлежу второму экземпляру класса!
Как Вы можете видеть, ООП сохраняет объекты как отдельные элементы, что позволяет легко разделять различные части кода на мелкие "связки".
По материалам net.tutsplus.com
Перевод - Дмитрий.
P.S. Хотите двигаться дальше в освоении PHP и ООП? Обратите внимание на премиум-уроки по различным аспектам сайтостроения, включая программирование на PHP, а также на бесплатный курс по созданию своей CMS-системы на PHP с нуля с использованием ООП:
Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!
Смотрите также:

















