После авторизации Вы получите доступ к файлам, скрытым материалам сайта, исходным кодам
возможность комментировать и т.д.

Вы можете авторизоваться на сайте всего одним кликом:

2016-07-24
Основы PHP → Введение в ООП
ООП, Класс, Объект, Метод, Функция

Вот мы и добрались до чрезвычайно важной темы, без которой современное профессиональное программирование просто немыслимо. В этом урокеречь пойдет об Объектно-Ориентированном Программировании при написании PHP-сценариев.

ООП в PHP

Сначала тема объектно-ориентированного программирования (ООП) может показаться вам довольно сложной. Однако не следует пугаться и опускать руки. При тщательном изучении темы и, главное, регулярной практике приемы ООП станут для вас незаменимыми помощниками при разработке собственных PHP-сценариев.

Объектно-ориентированный подход стал негласным стандартом при разработке программ и сценариев на высокоуровневых языках. И мы, как пропагандисты профессионального отношения к программированию, настоятельно рекомендуем освоить эту концепцию, что в итоге позволит не только качественно писать код, но и сэкономит ваше время при разработке.

ООП неспроста получило широкое распространение. Дело в том, что оно обладает рядом неоспоримых преимуществ.

  1. Простота. Действительно объектно-ориентированный код легко воспринимается при чтении. Кроме того, объектно-ориентированный подход позволяет достаточно легко проектировать большие сложные системы.
  2. Масштабируемость и расширяемость. Объектно-ориентированный подход дает возможность легко дописывать и модернизировать программный код.
  3. Ускорение цикла разработки. Хорошо выделенная модульность программ, свойственная объектно-ориентированному подходу, а также легкость в изменении, исправлении написанного кода позволяют значительно сократить общее время на разработку программ.

Что такое объектно-ориентированное программирование?

В ООП нам предстоит познакомиться с рядом новых синтаксических конструкций, которые дают новые программные возможности. Но для начала, чтобы уяснить, в чем заключается суть ООП, нужно познакомиться с двумя базовыми понятиями этого подхода — понятием класса и понятием объекта. Потратьте достаточно времени на то, чтобы определения класса и объекта были вам полностью ясны.

Понятие класса

Класс в ООП — это контейнер для логически связанных данных и функций.

Фактически класс — это тип данных. Как вы помните, в начале мы обсуждали типы данных в PHP и делили их на простые и сложные. Одним из сложных типов данных были массивы. Массивы можно представить как некоторую совокупность элементов различных (или одинаковых) типов.

Класс также является совокупностью элементов. Однако у него есть ряд отличий от массива. Во-первых, объявление класса, с которым мы познакомимся чуть позже, четко декларирует его состав. Иными словами, объявление класса определяет, какие элементы он включает в себя. Элементы класса обычно называют полями или свойствами. Во-вторых, класс может определять функции для работы с его полями.

Еще раз повторим, что класс — это тип данных, такой же, как строка или целое число. Он не имеет конкретной реализации, а лишь описывает структуру хранимой информации и функции для ее обработки.

Читателям, знакомым с такими языками как Си или Паскаль, должно быть известно понятие структуры как набора элементов простых типов данных. Класс, по сути, является структурой, в которой дополнительно можно объявлять функции для работы с хранимыми ею данными.

Можно придумать огромное количество примеров различных классов из обычной жизни. Допустим, если мы пишем сценарий, который должен работать с информацией о геометрических фигурах, то в качестве класса можно выделить фигуру "круг". Круг в программе может иметь ряд параметров: координаты центра, длину радиуса, цвет. Эти свойства в программе будут представлены элементами класса. Для определения координат центра нам потребуются две целочисленные переменные, длина радиуса может быть описана также целочисленной переменной, цвет может быть задан с помощью строки с его названием. Таким образом, для определения круга в программе нам понадобятся три целочисленные переменные и одна строковая. Они и будут свойствами класса, описывающего круг.

Простейшее объявление класса выглядит следующим образом:

class Article
{
   // тело класса
}

Объявление класса начинается с ключевого слова class. Далее следует название класса, которое принято писать с большой буквы. За ним идет блок в фигурных скобках, который может включать объявление полей и функций класса. Давайте рассмотрим класс с тремя полями.

class Article
{
   // ниже представлены три свойства класса: id, title, content
   $id;
   $title;
   $content;
}

Как видите, объявление полей класса аналогично объявлению простых переменных в PHP-сценарии.

Понятие объекта

Объект — совокупность конкретных данных и функций для их обработки. Фактически объект — это переменная, тип данных которой задается соответствующим классом. Переменная и простой тип данных находятся в том же отношении, что и объект с классом. Объект — это конкретная реализация какого-либо класса.

В нашем примере с кругом объектом будет являться какой-то конкретный круг с определенными координатами центра, радиусом и цветом. Для объявления объекта используется ключевое слово new .

$a = new Article();

Приведенная строчка является командой PHP-интерпретатору для создания объекта класса Article. Это значит, что PHP-интерпретатор подготовит структуру для хранения всех полей, описанных в классе Article.

Обращение к полям объекта происходит посредством оператора –> Пример:

$a = new Article();
echo $a->id;

Этот код выведет на экран содержимое поля id объекта $a. Еще раз обратим Ваше внимание: когда мы выводим, записываем, изменяем данные, то говорим об объектах, т. е. о конкретных переменных сложного типа. Класс не может что-либо хранить, он лишь описывает структуру данных и функции для работы с ними.

Обратите внимание на рисунок ниже. Пример класса представлен на нем верхним прямоугольником. Два нижних прямоугольника являются объектами, конкретными реализациями класса.

Приводя аналогии из реальной жизни, можно сказать, что класс — это некоторое понятие. Например, понятие "стол". Не какой-то конкретный стол, а само понятие стола как деревянного предмета с четырьмя ножками.

Объекты же — это конкретные воплощения понятия. Стол, который находится сейчас перед вами — это объект. Объект класса "стол".

Методы

Как уже было сказано, помимо свойств классы могут описывать функции для работы с ними. Такие функции принято называть методами класса.

Метод — функция, объявленная внутри класса. Метод имеет доступ ко всем полям класса, в котором объявлен. Для обращения к собственным полям внутри методов класса используется ключевое слово this. Пример приведен ниже:

class Article
{
// Объявление полей класса
$id;
$title;
$content;

   // Функция для вывода статьи
   function view()
   {
      echo "<h1>$this->title</h1><p>$this->content</p>";
   }
}

Поздравляем! Только что вы познакомились с двумя ключевыми понятиями ООП — понятиями класса и объекта. Если принципы использования объектов и классов вам ясны, то можно сказать, что Вы на 90% владеете ООП. Действительно, ООП больше не содержит каких-либо еще принципиальных понятий. Все остальные принципы объектно-ориентированного подхода основаны на использовании этих двух ключевых понятий.

Тем не менее за кажущейся простотой и ограниченностью инструментов ООП скрывается невероятная мощь этой методологии, которую вам еще предстоит ощутить. Давайте ознакомимся с тремя очень важными понятиями, которые несет в себе объектно-ориентированный подход.

511
0
Пожалуйста, авторизируйтесь, чтобы скачать архив с файлами урока