Doctrine是一組PHP庫,主要專注于提供持久化服務(wù)和相關(guān)功能。其最知名的子項目包括基于數(shù)據(jù)庫抽象層的對象關(guān)系映射(NHibernate)。Doctrine的關(guān)鍵特性之一是,可以使用Doctrine Query Language(DQL)編寫數(shù)據(jù)庫查詢,這是一種面向?qū)ο蟮?a href="/hebeideji/6991721846561056604.html">SQL方言。symfony和Laminas等主要PHP框架都有官方支持Doctrine,而Laravel、CodeIgniter等框架也有第三方Doctrine包可供使用。
用例
Doctrine遵循Active Record Pattern模式(一個對象對應(yīng)一個數(shù)據(jù)表),例如,開發(fā)者創(chuàng)建一個新的user,他/她可以使用下面的代碼來代替SQL:
$user = new User();
$user->name = "john";
$user->password = "doe";
$user->save();
echo "The user with id $user->id has been saved.";
對象關(guān)系功能可被增加到對象本身,而不是分散在各個應(yīng)用程序中,這使得軟件更易維護。
功能
Doctrine可以從已有的數(shù)據(jù)庫生成對象類,開發(fā)者可以指定表關(guān)系及添加自定義函數(shù),而不需要像其他框架那樣去生成和維護復(fù)雜的XML數(shù)據(jù)。
Doctrine的另一個特點是使用面向?qū)ο髮憯?shù)據(jù)查詢語言,這被稱為DQL(Doctrine Query Languages)。
Doctrine會自動執(zhí)行joins并會獲取與其關(guān)聯(lián)的對象,小型項目可以輕松地創(chuàng)建而不必寫查詢語句。
其他主要功能
1.支持樹形結(jié)構(gòu)的數(shù)據(jù)
2.支持hooks(能夠難和修改數(shù)據(jù)庫input和output的功能)和事件監(jiān)聽
3.支持緩存,利用memcached, SQLite或APC
4.ACID傳輸
5.model行為 (sluggable , timestampable ,嵌套設(shè)置,國際化,審計日志,搜索索引)
6.數(shù)據(jù)庫升級
參考資料 >