通過前三篇文章 基礎準備 、 構建路由 和 設計 MVC ,咱們已經獲得了一個結構比較完整的 MVC 架構的 PHP 微框架,可是距離一個真正可以上手使用的框架還差同樣東西: 數據庫封裝 ,本篇就將講述如何集成一個 ORM Composer 包 。php
本篇是本系列最後一篇,接下來我可能會以 讓咱們開了又開的 Composer 包 爲系列標題分享一些體驗和感悟,將主要發表在本站上。html
咱們選擇 Laravel 的 illuminate/database 做爲咱們的 ORM 包。我試用了幾個著名的 ORM,發現仍是 Laravel 的 Eloquent 好用!讓咱們開心的 ORM,開了又開! :-Dmysql
在本系列教程裏,每個 Composer 包都要知足如下基本要求:laravel
說到 PHP 的新特性,有句題外話。 PHP5.3 引入了命名空間,這是規劃在 PHP6 中的功能,因此 PHP5.3 在必定程度上其實就是 PHP6 ,PHP 的下一個版本是 PHP7 ,即將發佈,主要貢獻者是大名鼎鼎的 鳥哥 @Laruence 。另外本臺前方記者(就是我)剛剛從微博發來報道,鳥哥正在放大招,製造傳說中 PHP7 on JIT ,我大 PHP 的歷史車輪是沒法阻擋的哈哈哈!:-Pgit
給 composer.json 增長一個 require 項:github
"illuminate/database": "*"
運行 composer update ,等待安裝完成。web
修改 public/index.php 爲:sql
<?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 (注意替換數據庫密碼):數據庫
<?php return [ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'mffc', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 'prefix' => '' ];
修改 models/Article.php :json
<?php /** * Article Model */ class Article extends Illuminate\Database\Eloquent\Model { public $timestamps = false; }
controllers/HomeController.php 無需改動。
刷新,頁面依舊:
恭喜你!Eloquent 使用成功!
Eloquent 異常強大 ,能夠說是 Laravel 中 最特別 、 最有價值 的部分。
像 HomeController 中調用的 Article::first() ,以前用了十幾行代碼,如今什麼都不用幹,繼承一個類就好了。
Eloquent 更多用法參見:Eloquent ORM 中文文檔
還有不少著名的 ORM 和 Datamapping(數據庫遷移等) 包,參見: ORM and Datamapping
ORM 可以大幅提升提升開發效率,Eloquent 真乃神器也!
雖然 web 屆各語言陣營都在不斷推出新的所謂 快速開發框架 ,終歸仍是愈來愈像 Rails 。Eloquent 在表面上幾乎是最像 Rails 的 ORM 的了,可是跟 Rails 不能比啊,Ruby 的超強面向對象特性可不是蓋的。Laravel 做者 Taylor Otwell 接受採訪時曾表示,Eloquent 是整個 Laravel 中最難實現的部分。我在調試的時候也發現, MFFC/vendor/illuminate/database/Illuminate/Database/Eloquent/Model.php 這個文件有 3000 多行......
之後可能會有 模板引擎、表單驗證、發送郵件、權限體系管理、異步隊列、視頻音頻處理(亂入:-D) 等內容,敬請關注還未出世的 讓咱們開了又開的 Composer 包 系列文章。