Инструменты пользователя

Инструменты сайта


limb3_2007_2:ru:packages:dbal:driver

DBAL Driver

DBAL Driver - базовые классы для работы с базами данных, на основе которых построена остальнаях часть пакета DBAL.

Статическая структура DBAL DRIVER

:limb3_2007_2:ru:packages:dbal:limb3.0_dbal_driver.png}

Пример использования DBAL Driver

Приведем небольшой пример и дадим к нему подробные комментарии. Пример довольно абстрактный, однако позволяет продемонстрировать как используются отдельные компоненты DBAL.

  [...]
  $dbc = new DBC();
  $conn = $dbc->getCurrentConnection();
 
  $sql_string = 'SELECT team.id, team.title '.
         ' coach.id as coach_id, coach.name as coach_name, coach.last_name as coach_last_name '.
         ' FROM coach, team '.
         ' WHERE coach.team_id = team.id AND team.id = %team_id%';
 
  $stmt = $conn->newStatement($sql_string);
  $stmt->setInteger('team_id', $team_id);
 
  return $stmt->getRecordSet();

Итак, комментарии:

  $config = new DBC();

Здесь мы создали объект, которых хранит является фасадом для подключения к базе данных.

  $conn = $dbc->getCurrentConnection();

Затем мы получили объект соединения к базе данных. Допустим, это объект класса MySQLConnection.

  $sql_string = 'SELECT team.id, team.title '.
                ' coach.id as coach_id, coach.name as coach_name, coach.last_name as coach_last_name '.
                ' FROM coach, team '.
                ' WHERE coach.team_id = team.id AND team.id = :team_id:';
 
  $stmt = $conn->newStatement($sql_string);

Затем создали объект stmt - statement. Объект $conn самостоятельно решит какого типа statement нужно создать. Так как в запросе находится ключевое слово SELECT, то создался объект класса MySQLSelectStatement.

  $stmt->setInteger('team_id', $team_id);

Здесь мы установили значение параметра team_id запроса определенному значению. Данные конструкции используются для того, чтобы правильно экранировать параметры, то есть именно средствами драйвера базы данных.

  return $stmt->getRecordSet();

И наконец, мы вернули клиентам так называемый recordset, набор записей. На самом деле это объект класса MySQLRecordSet, который реализует интерфейс итератора. Клиенты могут работать с MySQLRecordSet как с обычным итератором, не зная, что данные взялись именно из базы данных. В этом и есть преимущество реализации драйвера, то что классы, входящие в DBAL поддерживают стандартные интерфейсы для работы с данными (см. пакет DATASOURCE).

Скажем также, что реальное обращение к базе данных еще не произошло, он произойдет, когда клиенты вызовет метод rewind() или getTotalRowCount() у recordset-а.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
  __  __   ___   _      __   __  ___   __  ___
 / / / /  / _ \ | | /| / /  /  |/  /  /  |/  /
/ /_/ /  / // / | |/ |/ /  / /|_/ /  / /|_/ / 
\____/  /____/  |__/|__/  /_/  /_/  /_/  /_/
 
limb3_2007_2/ru/packages/dbal/driver.txt · Последнее изменение: 2010/11/10 10:02 — 127.0.0.1