Профессиональное программирование на PHP

Страница 48 из 591


Введение в ОО-программирование 51

}

public function goodbye() {

return "До свидания, $this->name!\n";

}

public function age() {

$ts = strtotime($this->birthday); if($ts === -1) {

return "Неизвестно";

}

else {

$diff = timet) - $ts;

return floor ($diff/(24*60*60*365)) ,-

}

}

}

$user = new User('Джордж', '10 Oct 1973');

print $user->hello();

print "Вам ".$user->age()." лет.\п";

print $user->goodbye () ,•

?>

Выполнение данного кода приводит к появлению следующего текста:

Здравствуйте, Джордж!

Вам 2 9 лет.

До свидания, Джордж!

Конструктор в данном примере крайне прост; он только инициализирует два атрибута: имя и дату рождения. Методы тоже просты. Следует отметить, что псевдопеременная $this автоматически создается в методах класса и представляет объект класса User. Для доступа к свойству или методу используется оператор - >.

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

 Наследование (inheritance) — способность порождать новые классы из существующих и наследовать или переопределять их атрибуты и методы.

 Инкапсуляция (encapsulation) — способность скрывать данные от пользователей класса.

 Специальные методы (special methods) — как было показано выше в данном разделе, классы позволяют вызывать конструкторы, которые могут выполнять начальную работу (такую как инициализация атрибутов) каждый раз при создании нового объекта. Классы имеют и другие событийные обратные вызовы, которые также выполняются при возникновении других распространенных событий: при копировании, уничтожении и т.д.

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




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006