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

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


52 Глава 2 Объектно-ориентированное программирование...

Наследование

Наследование используется, когда требуется создать новый класс, имеющий свойства или поведение, подобные свойствам или поведению существующего класса. Для того чтобы обеспечить наследование, РНР поддерживает способность класса расширять существующий класс. При расширении класса новый класс наследует все свойства и методы родительского класса (за некоторыми исключениями, которые описываются в этой главе ниже). Можно добавлять новые методы и свойства, а также подменять существующие. Отношение наследования определяется с помощью ключевого слова extends (расширяет). Расширим класс User, создав новый класс, представляющий пользователей с административными полномочиями. Класс будет пополнен выбором пользовательского пароля из NDBM-файла и функцией сравнения, сопоставляющей имеющийся пользовательский пароль с введенным.

class AdminUser extends User{ public $password;

public function _construct($name, $birthday)

parent::_construct($name, $birthday);

$db = dba_popen("/data/etc/auth.pw", "r", "ndbm"); $this->password = dba_fetch($db, $name); dba close($db); } ~

public function authenticate($suppliedPassword)

if ($this->password === $suppliedPassword) { return true;

}

else {

return false;

}

}

}

Несмотря на краткость, класс AdminUser автоматически наследует все методы класса User, поэтому можно вызывать методы hello (), goodbye () и age (). Следует заметить, что конструктор родительского класса необходимо вызвать вручную как parent: :_construct (); РНР 5 не вызывает родительские конструкторы автоматически, parent — ключевое слово, которое преобразуется в имя родительского класса.

Инкапсуляция

Программисты, знакомые с процедурными языками или РНР 4, могут удивляться изобилию общедоступных переменных. Пятая версия РНР обеспечивает возможности сокрытия данных с помощью общедоступных, защищенных и частных атрибутов данных и методов. Эти методы и атрибуты часто называются РРР (public, protected, private) и имеют описанную ниже семантику.

 Общедоступные (public) — общедоступные переменные или методы доступны непосредственно для любого пользователя данного класса.

 Защищенные (protected) — доступ пользователя класса к защищенной переменной или методу невозможен, однако к ним можно получить доступ из подкласса, наследующего атрибуты и методы данного класса.



  • На сайте poverkaschetchikovvodi.ru стоимость куба холодной воды по счетчику, ооо.

  Hostland.Ru

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