PHP: Doctrine

Doctrine project 始於 2006 年,2008 年開始受到矚目;網站訪客數從每日 300 人到上千人;亦可在網上搜尋到許多 Framework 整合教學文章,例如 Zend FrameworkSymfonyCodeIgniter

Doctrine 的主要開發者 Jonathan H Wage,今年 24歲,非常年輕。Wage 在 Symfony 創始者的資助下成為 Doctrine 成立公司後的第一位員工。

Doctrine 特性

  • ORM (Object-relational mapping)物件與關聯資料的存儲對映
  • 也是 DBAL (Database Abstraction Layer)資料庫抽象層
  • 自訂專屬 DQL(Doctrine Query Language)資料庫查詢語言
  • 以物件導向的方式與資料庫溝通的強大工具

Doctrine 最低需求

PHP >= 5.2.3+,原文有說 雖然你不必額外安裝擴充套件.但是你必須安裝可用的PHP的PDO. (一般來說絕大部分都已安裝)

Doctrine 基本架構


DBAL 完整支援擴充 PDO.如果你要完整發揮抽象概念的PDO,DBAL可以獨立使用而不自行去呼叫PDO.

Doctrine 概觀

Doctrine 是個標準的ORM工具.依照 Active Record(一般情況下使用SQL語法來存取資料庫,而透過Active Record則可以簡易的使用物件的方式來存取資料庫,不需要經過任何連接、宣告,Active Record自動會去找尋對應的資料表名稱,然後直接建立物件函式,將資料庫存取簡化到一個極致。) Data Mapper(Data Mapper 與 Active Record類似主要再處理資料表之後的關聯與對應) Meta Data Mapping(Meta Data Mapping 則是對於大部分開發資料庫時,往往許多操作的代碼重複.為了改善此現象允許事先定義對照各項資料庫操作方法用以呼叫使用.)模式鎖組合而成的.

Doctrine 關鍵概念

Doctrine 的 DQL(object query language).是一個強大功能.你可以使用domain model: class names, field names, relations between classes, 之類去組合使用.
注意事項:

  • select 為classes 並不是個 tables. (class/model)
  • We join along associations (u.Phonenumbers)
  • We can reference fields (u.level)
  • There is no join condition (ON x.y = y.x). The associations between your classes and how these are expressed in the database are known to Doctrine (You need to make this mapping known to Doctrine, of course. How to do that is explained later in the Defining Models chapter.).

總結

Doctrine 主要要注意,他是以domain 為概念下去開發.與一般以往學到的程式語言所對db操作開發是截然不同的.
我自己看法為, 以ORM架構下domain概念下去延伸,之後或許可以自行增加各種資料的io如對xml存取ini存取不再局限於只是資料庫的範圍.

補個2.0 簡報 (差好多做的真棒,快出正式版了)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *