Статьи Новости Контакты
MySQL (0)

15.01.2008
Наталия Квитка

Propel — начало работы

объектно ориентированный доступ к базам данных

Propel

При разработке веб-приложений в современных условиях постоянно имеется необходимость использования баз данных — и зачастую разработчику удобнее и проще работать с данными, не создавая SQL-запросов напрямую. Propel*, обеспечивая объектно ориентированный доступ к базам данных, позволяет хранить, изменять, удалять и находить объекты в БД без составления запросов, абстрагируясь от особенностей имеющейся базы данных, а также существенно облегчает разработчику работу по переводу сайта на работу с другой СУБД.

Говоря о достоинствах Propel, в первую очередь необходимо отметить следующее. Во-первых, это независимость от системы управления базами данных. Поддерживая работу с такими СУБД, как MySQL, MS SQL Server, PostgreSQL, SQLite, Oracle, в случае отсутствия каких-либо возможностей у текущей системы Propel будет эмулировать их таким образом, чтобы обеспечить максимальную совместимость и дать возможность легкого переноса всего приложения с одной СУБД на другую. Далее, используя XML для создания схемы базы данных, Propel легко интегрируется с другими XML-ориентированными средствами. Нельзя не обратить внимание также на его интуитивную понятность и легкость в изучении.

Инсталляция Propel

Propel поддерживает работу с СУБД MySQL, MS SQL Server, PostgreSQL, SQLite, Oracle

Propel может использоваться на Windows- и Unix-ориентированных платформах. Для работы с ним вам понадобится PHP версии 5.0.0 или выше, любая из поддерживаемых СУБД (MySQL, MS SQL Server, PostgreSQL, SQLite, Oracle), Phing 2.0 (можно скачать дистрибутив и получить более конкретную информацию на сайте phing.info), Creole версии 1.0.0 или выше (можно скачать на сайте creole.phpdb.org).

Установка генератора классов и SQL (generator) c помощью инсталлятора пакетов PEAR выполняется следующей командой:

pear install http://propel.phpdb.org/pear/propel_generator-current.tgz

Установка среды исполнения (runtime):

pear install http://propel.phpdb.org/pear/propel_runtime-current.tgz

Propel можно установить посредством инсталлятора пакетов PEAR, а можно скачать дистрибутив на официальном сайте

Также вы можете скачать дистрибутив Propel с сайта propel.phpdb.org и распаковать его по тому пути, по которому он должен быть установлен. Затем необходимо сконфигурировать PHP-окружение — добавить путь к директории propel/runtime/classes в include_path PHP. Самым простым способом сделать это является внесение этого пути в файл php.ini в переменную include_path:

Для Unix:

include_path="/usr/local/lib/php:/usr/local/propel/classes"

Для Windows:

include_path="C:\PHP\PEAR;C:\PHP\apps\propel\classes"

Из PHP-скрипта вы можете изменить include_path командой set_include_path. Другие переменные в файле php.ini, необходимые для работы Propel: ze1_compatibility_mode — значение должно быть установлено в Off, magic_quotes_gpc — Off, magic_quotes_sybase — Off, register_globals — может быть отключен (Off).

Начало работы

Для того чтобы начать работать с базой данных, необходимо описать ее структуру в формате XML. Элементы, необходимые для этого:

  • database — база данных, задается ее название;
  • table — таблица в данной базе, задается ее название и описание;
  • column — поле таблицы.

Например:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<database name="fruitbasket" defaultIdMethod="native">
<table name="Apple" description="Different Apples In Our Basket">
<column name="apple_id" required="true" primaryKey="true" phpName="AppleId" peerName="APPLEID" type="INTEGER" />
<column name="apple_color" phpName="AppleColor" peerName="APPLECOLOR" type="VARCHAR" size="32" required="true" default="no color" />
</table>
</database>

Таким образом, мы описали базу данных "Корзина фруктов", состоящую для примера из одной таблицы "Яблоко", в которой каждое яблоко описывается своим порядковым номером и цветом. При этом порядовый номер является первичным ключом и создается обычным для текущей СУБД способом (например, autoincrement в MySQL), а значение поля "Цвет" обязательно и по умолчанию равно no color.

Теперь нужно задать настройки, необходимые для генерации кода проекта. Создадим файл build.properties, в котором укажем название проекта, используемую СУБД и параметры подключения:

propel.project = fruitbasket
propel.database = mysql
propel.database.url = mysql://root:root@localhost/fruitbasket

Далее создадим файл runtime-conf.xml, содержащий следующую информацию:

<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
<datasources default="fruitbasket">
<datasource id="fruitbasket">
<adapter>mysql</adapter>
<connection>
<phptype>mysql</phptype>
<hostspec>localhost</hostspec>
<database>fruitbasket</database>
<username>root</username>
<password>root</password>
</connection>
</datasource>
</datasources>
</config>

Теперь, когда Propel установлен, структура базы данных описана и указаны все необходимые настройки, можно приступить к генерации проекта. Для этого необходимо запустить скрипт propel-gen:

Для Unix:

propel-gen /path/to/fruitbasket

Для Windows:

propel-gen C:\path\to\fruitbasket

Выполнение команды propel-gen
Выполнение команды propel-gen

Считая, что файлы schema.xml, build.properties и runtime-conf.xml находятся в директории projects/fruitbasket, в ней же в результате выполнения скрипта будет создана директория build, содержащая SQL-файлы для создания описанной базы данных, а также PHP-файл конфигурации проекта и набор классов для работы с этой базой. В общем виде класс BaseApple будет представлять собой строку из таблицы Apple, BaseApplePeer — содержать статические методы для осуществления запросов к таблице Apple, а AppleMap — хранить информацию о структуре таблицы. Кроме того, имеются пустые классы-заглушки Apple и ApplePeer, которые будут подключаться непосредственно из разрабатываемого приложения. При необходимости создания дополнительных функций для работы с базой именно в эти классы вносится вся новая функциональность.

Для создания базы данных используйте файл запроса sql\schema.sql.

Подключить свежесозданные классы просто. Для этого достаточно инициализировать Propel, указав путь к файлу с настройками:

Propel::init("fruitbasket-conf.php");

и обратиться к классу там, где он необходим:

include_once "fruitbasket\Apple.php";

Создание, удаление, изменение и выборка объектов

Методы, используемые для создания, выборки и удаления записей из БД

Создать новую запись в базе данных с помощью Propel просто — достаточно всего лишь создать новый экземпляр необходимого класса, задать его свойства и записать, используя метод save.

$apple = new Apple(); // берем новое яблоко
$apple = setAppleColor("red"); // указываем его цвет — красный
$apple->save(); // кладем яблоко в корзину — сохраняем новую запись, фактически выполняя команду INSERT

Далее все свойства этого объекта будут нам доступны следующим образом:

$apple->getAppleId(); // вернет нам идентификатор новой записи

Чтобы изменить свойства объекта, нужно также применить метод set к уже существующему объекту, а затем сохранить его.

$apple = ApplePeer::retrieveByPk(1); // выберем запись с порядковым номером 1
$apple->setAppleColor("green"); // изменим свойство AppleColor
$apple->save(); // сохраним запись, что равноценно команде UPDATE

Удаление записи производится методом Delete:

$apple = ApplePeer::retrieveByPk(1); // выберем запись с порядковым номером 1
$apple->delete(); // удаляем запись




Скоро на сайте

  • Wordpress

    Серия статей о плагинах к движку WordPrress
  • AJAX

    Проекты и продукты, ориентированные на AJAX
  • Новые сервисы Google

    Обзор новых сервисов Google
 

Copyright © 2003—2018 Все права защищены

При использовании материалов сайта ссылка на hostinfo.ru обязательна

  • хостинг от .masterhost
  • Rambler's Top100