回顧
經(jīng)過前三篇文章 基礎(chǔ)準(zhǔn)備 、 構(gòu)建路由 和 設(shè)計(jì) MVC ,我們已經(jīng)得到了一個結(jié)構(gòu)比較完整的 MVC 架構(gòu)的 PHP 微框架,但是距離一個真正能夠上手使用的框架還差一樣?xùn)|西: 數(shù)據(jù)庫封裝 ,本篇就將講述如何集成一個 ORM Composer 包 。
本篇是本系列最后一篇,接下來我可能會以 讓我們開了又開的 Composer 包 為系列標(biāo)題分享一些體驗(yàn)和感悟,將主要發(fā)表在本站上。
正文
我們選擇 Laravel 的 illuminate/database 作為我們的 ORM 包。我試用了幾個著名的 ORM,發(fā)現(xiàn)還是 Laravel 的 Eloquent 好用!讓我們開心的 ORM,開了又開! :-D
在本系列教程里,每一個 Composer 包都要滿足以下基本要求:
原生依賴 Composer 進(jìn)行管理
在好用的基礎(chǔ)上盡量簡單(比如我們那個超簡單的路由包)
盡量新,用上 PHP 的新特性
說到 PHP 的新特性,有句題外話。 PHP5.3 引入了命名空間,這是規(guī)劃在 PHP6 中的功能,所以 PHP5.3 在一定程度上其實(shí)就是 PHP6 ,PHP 的下一個版本是 PHP7 ,即將發(fā)布,主要貢獻(xiàn)者是大名鼎鼎的 鳥哥 @Laruence 。另外本臺前方記者(就是我)剛剛從微博發(fā)來報(bào)道,鳥哥正在放大招,制造傳說中 PHP7 on JIT ,我大 PHP 的歷史車輪是無法阻擋的哈哈哈!:-P
安裝 illuminate/database
給 composer.json 增加一個 require 項(xiàng):
"illuminate/database": "*"
運(yùn)行 composer update ,等待安裝完成。
使用 Eloquent
修改 public/index.php 為:
<?php
use Illuminate\Database\Capsule\Manager as Capsule;
// Autoload 自動載入
require '../vendor/autoload.php';
// Eloquent ORM
$capsule = new Capsule;
$capsule->addConnection(require '../config/database.php');
$capsule->bootEloquent();
// 路由配置
require '../config/routes.php';
新增 config/database.php (注意替換數(shù)據(jù)庫密碼):
<?php
return [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mffc',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => ''
];
修改 models/Article.php :
<?php
/**
* Article Model
*/
class Article extends Illuminate\Database\Eloquent\Model
{
public $timestamps = false;
}
controllers/HomeController.php 無需改動。
刷新,頁面依舊:
恭喜你!Eloquent 使用成功!
Eloquent 更多用法
Eloquent 異常強(qiáng)大 ,可以說是 Laravel 中 最特別 、 最有價值 的部分。
像 HomeController 中調(diào)用的 Article::first() ,之前用了十幾行代碼,現(xiàn)在什么都不用干,繼承一個類就行了。
Eloquent 更多用法參見:Eloquent ORM 中文文檔
其他著名 ORM
還有很多著名的 ORM 和 Datamapping(數(shù)據(jù)庫遷移等) 包,參見: ORM and Datamapping
ORM 能夠大幅提高提高開發(fā)效率,Eloquent 真乃神器也!
雖然 web 屆各語言陣營都在不斷推出新的所謂 快速開發(fā)框架 ,終歸還是越來越像 Rails 。Eloquent 在表面上幾乎是最像 Rails 的 ORM 的了,但是跟 Rails 不能比啊,Ruby 的超強(qiáng)面向?qū)ο筇匦钥刹皇巧w的。Laravel 作者 Taylor Otwell 接受采訪時曾表示,Eloquent 是整個 Laravel 中最難實(shí)現(xiàn)的部分。我在調(diào)試的時候也發(fā)現(xiàn), MFFC/vendor/illuminate/database/Illuminate/Database/Eloquent/Model.php 這個文件有 3000 多行......
目前建造一個豐滿的可以上手使用的 PHP 框架的工作就算是基本完成了,接下來我會繼續(xù)完善 MFFC 框架,讓她更加豐富、好用!
以后可能會有 模板引擎、表單驗(yàn)證、發(fā)送郵件、權(quán)限體系管理、異步隊(duì)列、視頻音頻處理(亂入:-D) 等內(nèi)容,敬請關(guān)注還未出世的 讓我們開了又開的 Composer 包 系列文章。
謝謝大家的閱讀和陪伴!再見!