| |
(сложение, вычитание и т. д.) для объектов. Например, если бы
мы
захотели добавить в язык комплексные числа, в C++ это можно было сделать без
осо-
бых затруднений (и класс комплексных чисел по использованию практически не от-
личался бы от встроенного типа int), однако в PHP у нас такое добавление не
удаст-
ся. Альтернативное решение состоит в том, чтобы везде вместо + и других
операций
использовать вызовы соответствующих функций — например, Add(), которые бы
являлись методами класса.
Но обо всем по порядку. Давайте посмотрим, как создать класс в PHP. Это
довольно
несложно:
class MyName {
описания свойств
. . .
определения методов
}
Замечу, что здесь не создается объекта класса, а только определяется новый тип.
Чтобы создать объект класса MyName, в PHP нужно воспользоваться специальным
оператором new:
$Obj = new MyName;
Вот теперь в программе существует объект $Obj, который "ведет себя" так же, как
и
все остальные объекты класса MyName.
Свойства объекта
Но давайте пока не будем создавать объектов, а вернемся опять к классу. Сначала
(честно говоря, можно и не только в начале, но и в любом другом месте описания)
должны следовать описания свойств класса. Свойство — это просто своеобразная
переменная внутри объекта класса, в которой может храниться какое-то значение.
Например, в классе таблицы MySQL, которым мы вскоре займемся, имя таблицы
задано в виде свойства $TableName.
То есть, грубо говоря, каждый объект-таблица содержит в себе свою собственную
переменную $TableName и имеет над ней полный контроль. Какие именно свойства
будет иметь любой объект заданного класса, указывается при создании этого
класса.
Глава 31. Объектно-ориентированное программирование на PHP 455
Мы можем представить несколько объектов одного и того же типа как братьев-
близнецов: у них все одинаково с "физиологической" точки зрения (одни и те
же имена свойств), но на самом деле это совершенно разные "люди" — у них
разные взгляды, различный образ жизни (свойства содержат разные значе-
ния).
Объект класса может напрямую обращаться к своим свойствам, считывать их или
записывать. Еще раз: каждый объект одного и того же класса имеет свой собствен-
ный набор значений свойств, и они не пересекаются. Таким образом, объект класса
со
стороны представляется контейнером, хранящим свои свойства.
Объявление свойств задается при помощи ключевого слова var:
var $pName1, $pname2, ...;
Мы видим, что каждое свойство должно иметь уникальное имя в классе. Инструкций
var может быть несколько, и они могут встречаться в любом месте описания класса,
а не только в его начале.
Займемся теперь вопросом о том, как нам из программы получить доступ к
какому-то
свойству определенного объекта (например, объекта $Obj, который мы только что
создали). Это делается очень просто при помощи операции ->:
// Выводим в браузер значение свойства Name1 объекта $Obj
echo $Obj->Name1;
// Присваиваем значение свойству
$Obj->Name2="PHP Four";
Если какое-то свойство (например, с именем SubObj) объекта само является объек-
том (что вполне допустимо), нужно использовать две "стрелочки":
// Выводим значение свойства Property объекта-свойства
// $SubObj объекта $Obj
echo $Obj->SubObj->Property;
Такой синтаксис был придуман из того расчета, чтобы быть максимально простым.
Добавлю, что указание объекта $Obj перед стрелкой обязательно по той причине,
что
каждый объект имеет свой собственный набор свойств. Поэтому-то они и не пересе-
каются при хранении, а при доступе нужно уточнить объект, свойство которого за-
прашивается.
Впрочем, в данном простом примере объект ничем не лучше обычного ассоциативно-
го массива
|
|