Отправляет email-рассылки с помощью сервиса Sendsay

PHP 5 для начинающих

  Все выпуски  

Классы и объекты


PHP 5 для начинающих

В предлагаемом материале освещается сущность классов и объектов, базовый синтаксис определения классов и создания новых объектов, а также способы проверки объектов.

Рекомендуемые для совместной проработки практические занятия

Как нам уже известно, классы представляют собой коллекцию переменных и функций для работы с этими переменными. В соответствии с терминологией, принятой в объектно-ориентированном программировании, эти переменные называются свойствами (properties), а функции - методами (methods). Свойства отражают те или иные характеристики моделируемого с помощью данного класса феномена, а методы - его поведение.

Классы являются своего рода абстрактным шаблоном, калькой, для своих реальных воплощений - объектов (objects), которые еще называют экземплярами (instances[2]) классов.

[Подсказка]Подсказка

Для лучшего понимания взаимоотношений между классами и объектами полезно рассмотреть следующий упрощенный пример. Мы знаем, что PHP поддерживает простые типы данных - логический, целочисленный и т. д. Любой из таких типов может быть представлен конкретными переменными ($x, $y, $var и т. п.), каждая из которых будет иметь определенное значение данного типа. Продолжим аналогию. Классы также являются своего рода типами данных; они могут быть представлены конкретными объектами. Если в паре «скалярный тип данных - переменная» тип данных определял диапазон значений, которые могла принимать принадлежащая этому типу переменная, то в паре «класс - объект» класс определяет набор свойств, присущих объекту этого класса, и методов для работы с этими свойствами; однако, значения свойств у каждого объекта могут отличаться (например, класс Airplane может определять такие свойства, как координаты над плоскостью, высота, направление полета и текущая скорость; безусловно, у различных объектов этого класса конкретные значения каждого из перечисленных свойств вряд ли совпадают).

Определение класса (Пример 5.1, «Определение простейшего класса») начинается со служебного слова class, за которым после пробела следует название класса. Далее могут следовать другие компоненты, связанные с наследованием и/или применением интерфейсов (Глава 7, Наследование). Наконец, в фигурных скобках располагается тело класса, т. е. определения его свойств и методов (Глава 6, Свойства и методы).

[Подсказка]Подсказка

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


Названия классов подчиняются обычным в PHP требованиям к именам (разрешается использовать буквы английского алфавита в нижнем и верхнем регистрах, цифры, знак подчеркивания). Однако, существует несколько рекомендаций, которым желательно следовать при выборе названий [3].

  • Названия классов должны быть осмысленными и отражать моделируемую сущность (Point, Car, Person).

  • Все слова в названии класса начинаются с заглавной буквы, остальные буквы - строчные (CarMotor, BankAccount).

  • Если класс входит в состав более крупного проекта, в его названии следует использовать единый в рамках этого проекта префикс, отделенный от названия класса знаком подчеркивания (Foo_ClassOne, Foo_ClassTwo).

[Подсказка]Подсказка

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

Некоторые проекты имеют свои собственные, более специализированные стандарты кодирования [4][5].

Создание объектов. Для того, чтобы создать новый объект (экземпляр класса), нужно воспользоваться оператором new в сочетании с названием класса и присвоить возвращенный результат[3] какой-либо переменной (Пример 5.2, «Создание нового объекта»).

[Замечание]Замечание

Указатель возвращается только в том случае, если создание нового объекта прошло успешно; поэтому имеет смысл проверять результат присвоения (см. Инспекция объектов).


В более сложном случае создание нового объекта сопровождается передачей ему тех или иных параметров - подобно тому, как это делается при вызове функции (см. Глава 6, Свойства и методы).

Инспекция объектов. PHP 5 предоставляет целый арсенал средств для проверки состояния объекта. Прежде всего, это универсальные функции print_r() и var_dump() (Пример 5.3, «Вывод дампа объекта»), которые с равным успехом используются для инспекции скалярных переменных и массивов.


Более специализированные действия доступны при помощи набора функций для работы с классами и объектами (Глава 10, Объектно-ориентированные функции). Эти функции существовали и в предыдущей версии, но в пятой были расширены.

Наконец, следует упомянуть специальное объектно-ориентированное расширение, которое обеспечивает поддержку программного интерфейса для углубленной работы с объектной моделью (Глава 11, Рефлексия).



[2] Правильнее было бы переводить это слово как пример.

[3] В PHP 5 этот оператор возвращает указатель на новый экземпляр класса (см. «Указатели на объект»), в отличие от предыдущей версии, в которой возвращался непосредственно сам этот экземпляр.

Created with DocBook


В избранное