Создание класса

Класс объявляется при помощи ключевого слова class , после которого следует уникальное имя класса и тело класса в фигурных скобках. В теле класса объявляются переменные и функции класса, которые соответственно называются методами и членами.
В листинге 1 . 1 приводится общий синтаксис объявления класса.

Листинг 1 . 1 . Объявление класса
class имя_класса
// Члены и
/ / методы класса
?>

Важной особенностью РНР является то, что РНР-скрипты могут включаться в документ при помощи тегов < ? php и ? > . Один документ может содержать множество включений этих тегов, однако класс должен объявляться в одном неразрывном блоке < ? php и ? > . Попытка разорвать объявление класса приводит к генерации интерпретатором ошибки разбора Parse error: parse еггог, unexpected ‘;’, expecting T_FUNCTION.

Так как прерывать объявление класса недопустимо, его не удастся механически разбить при помощи инструкций include ( ) , include оnсе (), require ( ) , require_once ( ) . Допускается, однако, использование этих конструкций внутри методов.

Напомним, что при помощи инструкций include ( ) , include _ оnсе ( ) , require ( ) , require_once ( ) можно вкпючать в состав РНР-скриптов другие РНР-скрипты . Это позволяет разбивать объемные многострочные файлы на множество мелких файлов, которые программисту проще воспринять.
При отсутствии вкпючаемого файла инструкция include ( ) генерирует предупреждение, однако не останавливает работу скрипта, в то время как require ( ) в этом случае аварийно завершает работу приложения . Допускается множественное вкпючение файлов друг в друга, что может приводить к запутанным ситуациям и многократному вкпючению файлов в приложение.
Суффикс оnсе означает, что файл будет вкпючен лишь один раз, и повторный вызов инструкции inlude_once ( ) или requ re_once ( ) игнорируется. Это особенно удобно для вкпючения библиотек функций и кпассов, повторное объявление которых вызывает ошибку.

Введение в объектно-ориентированное программирование

Независимо от языка программирования объектно-ориентированный подход имеет ряд общих принципов,  а именно:

  • возможность создавать абстрактные типы данных, позволяющая наряду с предопределенными типами данных (такими как integer, bool, double, string) вводить свои собственные типы данных (классы) и объявлять “переменные” таких типов данных (объекты). Создавая свои собственные типы данных, программист оперирует не машинным и терминами (переменная, функция), а объектами реального мира, поднимаясь тем самым на новый абстрактный уровень. Яблоки и людей нельзя умножать друг на друга, однако низкоуровневый код запросто позволит совершить такую логическую ошибку, тогда как при использовании абстрактных типов данных такая операция становится невозможной;
  • инкапсуляция, допускающая взаимодействие пользователя с абстрактными типами данных только через их интерфейс и скрывающая внутреннюю реализацию объекта, не допуская влияния на его внутреннее состояние. Память человека ограничена и не может содержать все детали огромного проекта, тогда как использование инкапсуляции позволяет разработать объект и использовать его, не заботясь о внутренней реализации, прибегая толь ко к небольшому числу интерфейсных методов;
  • наследование, позволяющее развить существующий абстрактный тип данных – класс, создав на его основе новый класс. При этом новый класс автоматически получает возможности уже существующего абстрактного типа данных. Зачастую абстрактные типы данных слишком сложны, поэтому прибегают к их последовательной разработке, выстраивая иерархию классов от общего к частному;
  • полиморфизм, допускающий построение целых цепочек и разветвленных деревьев наследующих друг другу абстрактных типов данных (классов). При этом весь набор классов будет иметь ряд методов с одинаковыми названиями : любой из классов данного дерева гарантированно обладает методом с таким именем. Этот принцип помогает автоматически обрабатывать массивы данных разного типа.

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

Переменные объявляются при помощи типа, объекты при помощи класса

Переменные объявляются при помощи типа, объекты при помощи класса

06ъектно-ориентированные возможности РНР

Последние два десятилетия в IT-индустрии получил широкое распространение объектно-ориентированный подход. Его в ведение связано со все возрастающим объемом программных систем, с которыми приходится сталкиваться разработчикам.