Java 平台整合 Hibernate 這個 ORM 套件進行開發相當的普遍,現在 PHP 也有 Propel 和其他類似的套件,由於 Propel 已經整合到 symfony 這個 PHP framework,相信技術和穩定方面都達到了一 定程度,最近試著整合的確是有一定的困難度,整理的心得如下:
一 、安裝
在 Fedora 7 上需要以下幾個套件
- php-5.2.4
- php-pear-1.5.0
- php-xml-5.2.4
- php-pear-log
- php-mysql-5.2.4 (看使用什麼資料安裝對應的套件)
上面的套件並不包含 Propel,不過 PHP 的套件管理的確已經相當成熟,安裝 Propel 相當方便,這裡介紹利用 Pear 安裝的程序:
首先安裝 phing 這個必需的套件
pear channel-discover pear.phing.info
pear install phing/phing
接著以下3個指令就可以裝好 Propel
pear channel-discover pear.phpdb.org
pear install phpdb/propel_generator
pear install phpdb/propel_runtime
請注意指令順序,在安裝過程中 pear 會自動安裝其他所需要的套件.
既然是 ORM 一定會有後端資料庫整合,如果用的是MySQL 請檢查 php5-mysql 套件是否已安裝
二 、應用
Propel 在自動產生 PHP ORM class 時必需有資料庫 schema 檔案,可以參考官方網站的文件來撰寫,檔案完成後 Propel 可以依據 schema 檔案自動建立相關 table,這裡介紹另一個比較常用的模式,資料庫 table 建好後,自動產生 schema 檔案。
先建立 build.properties,mysql 範例如下
propel.project = <project name>
propel.database = mysql
propel.database.url = mysql://<db user>:<db password>@<db host>/<database>
接下來用以下指令就可以自動依據 table 產生 schema.xml
phing -f /usr/share/pear/data/propel_generator/pear-build.xml -Dproject.dir=. creole
* 重點是 pear-build.xml 定義了建立 propel 相關檔案的資料,不同的 distribution 可能在不同位置
有了 build.properties、schema.xml 後請依照官方網站的說明建立 runtime-conf.xml,有了這3個檔案,以下指令就可以自動建立 php 的 class
phing -f /usr/share/pear/data/propel_generator/pear-build.xml -Dproject.dir=.