Некоторые принципы шаблонов. Ослабление связи

Чтобы сделать код связи с базой данных гибким и управляемым, мы должны от­делить логику приложения от специфики платформы системы управления базами данных. До недавнего времени это делалось, в основном, с помощью пакета pear: icon biggrin Некоторые принципы шаблонов. Ослабление связи B. Но теперь его заменили два новых решения: встроенное расширение PDO, которое написано на языке С и работает намного быстрее, чем pear: icon biggrin Некоторые принципы шаблонов. Ослабление связи B, и другой пакет REAR. pear: :MDB2. Пакет pear: :MDB2 по своей структуре и функцио­нальным возможностям напоминает pear : : DB, но обеспечивает существенную до­полнительную поддержку переносимости между платформами баз данных.

Вот пример кода, в котором используется пакет PEAR: :MDB2 для доступа к базе данных MySQL.

require_once  MDB2.php’ ;

$dsn = «mysql://mattz@localhost/test»;

$mdb2 = MDB2: : connect($dsn);

$query_result = $mdb2->query( «SELECT * FROM bobs_table» );

while ( $row = $query_result->fetchRow( ) ) {

printf( «I %-4sI %-4s| %-25sI», $row[0], $row[2], $row[l] );

print «\n»;

}

$mdb2->disconnect();

Кроме того, пакет PEAR:: MDB2 позволяет отделить код приложения от специфи­ки платформы базы данных. При условии, что вы используете совместимый SQL- код, ваше приложение будет работать со многими СУБД, включая MySQL, SQLite MSSQL и др. При этом вам не нужно будет вносить изменения в свой код, кроме, конечно, настройки DSN. Пожалуй, это единственное место в программе, где необходимо сконфигурировать контекст базы данных. На самом деле пакет PEAR: : MDB 2 до некоторой степени помогает также работать и с различными «диалектами» SQL— и это одна из причин, по которой вы можете решить использовать его, не­смотря на скорость и удобство PDO.

Программирование PHP04 Некоторые принципы шаблонов. Ослабление связи

Структура, показанная на рис. выше имеет некоторое сходство с шаблоном Ab­stract Factoiy, который был описан в книге «Банды четырех» и будет также рас­смотрен далее. Более простой по своей природе, он, тем не менее, име­ет такое же назначение: генерировать объект, который реализует абстрактный ин­терфейс и не требует от клиента непосредственного создания экземпляра объекта.

Несмотря на то что в пакете MDB 2 или в расширении PDO клиентский код отде­лен от специфики реализации платформы СУБД, свою часть работы вы все равно должны сделать. Если ваш (теперь уже универсальный) SQL-код рассредоточен по всему проекту, вы вскоре обнаружите, что единственное изменение какого-либо аспекта проекта может повлечь за собой целый каскад изменений во многих местах кода. И здесь самым типичным примером было бы изменение структуры базы дан­ных, при котором добавление дополнительного столбца в таблице может повлечь за собой изменение SQL-кода многих повторяющихся запросов к базе данных. Поэто­му вам следует подумать о том, чтобы извлечь этот код и поместить его в один па­кет, тем самым отделив логику приложения от специфики реляционной базы дан­ных.

Добавить комментарий