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

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


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

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

 Можно реализовать все их собственные вызовы к базам данных. Это неразумно, поскольку сделает всю работу по созданию оболочки баз данных бессмысленной.

 Можно использовать API-интерфейс оболочки баз данных, но создавать объекты "налету". Ниже приводится пример, в котором используется данный вариант, class Weblog {

public function show_entry($entry_id)

$query = "SELECT * FROM Entries WHERE entry_id = :1"; $dbh = new Mysql_Weblo'g () ;

$stmt = $dbh->prepare($query)->execute($entry_id); $entry = $stmt->fetch_row(); ^ // отображение записи

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

 Делегирование реализуется с помощью класса Weblog, содержащего объект-оболочку базы данных как атрибут. Когда создается экземпляр класса, он создает объект оболочки базы данных, который будет использоваться для всех операций ввода-вывода. Ниже приводится реализация класса Weblog с использованием этого приема.

class Weblog { protected $dbh;

public function setDB($dbh)

^ $this->dbh = $dbh;

public function show_entry($entry_id)

$query = "SELECT * FROM Entries WHERE entry_id = :1"; $stmt = $this->dbh->prepare($query)->execute($entry id); $entry = $stmt->fetch_row(); ~

// отображение записи

}

Теперь базу данных для объекта можно установить следующим образом:

$blog = new Weblog; $dbh = new Mysql Weblog; $blog->setDB($dbE);



  • montenegro 2009 paragliding - Кулинарные рецепты.

  Hostland.Ru

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