欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用 Composer構(gòu)建自己的 PHP 框架之使用 ORM

 更新時(shí)間:2014年10月30日 10:52:22   投稿:hebedich  
經(jīng)過前三篇文章 基礎(chǔ)準(zhǔn)備 、 構(gòu)建路由 和 設(shè)計(jì) MVC ,我們已經(jīng)得到了一個(gè)結(jié)構(gòu)比較完整的 MVC 架構(gòu)的 PHP 微框架,但是距離一個(gè)真正能夠上手使用的框架還差一樣?xùn)|西: 數(shù)據(jù)庫封裝 ,本篇就將講述如何集成一個(gè) ORM Composer 包

回顧

經(jīng)過前三篇文章 基礎(chǔ)準(zhǔn)備 、 構(gòu)建路由 和 設(shè)計(jì) MVC ,我們已經(jīng)得到了一個(gè)結(jié)構(gòu)比較完整的 MVC 架構(gòu)的 PHP 微框架,但是距離一個(gè)真正能夠上手使用的框架還差一樣?xùn)|西: 數(shù)據(jù)庫封裝 ,本篇就將講述如何集成一個(gè) ORM Composer 包 。

本篇是本系列最后一篇,接下來我可能會以 讓我們開了又開的 Composer 包 為系列標(biāo)題分享一些體驗(yàn)和感悟,將主要發(fā)表在本站上。

正文

我們選擇 Laravel 的 illuminate/database 作為我們的 ORM 包。我試用了幾個(gè)著名的 ORM,發(fā)現(xiàn)還是 Laravel 的 Eloquent 好用!讓我們開心的 ORM,開了又開! :-D

在本系列教程里,每一個(gè) Composer 包都要滿足以下基本要求:

原生依賴 Composer 進(jìn)行管理
在好用的基礎(chǔ)上盡量簡單(比如我們那個(gè)超簡單的路由包)
盡量新,用上 PHP 的新特性


說到 PHP 的新特性,有句題外話。 PHP5.3 引入了命名空間,這是規(guī)劃在 PHP6 中的功能,所以 PHP5.3 在一定程度上其實(shí)就是 PHP6 ,PHP 的下一個(gè)版本是 PHP7 ,即將發(fā)布,主要貢獻(xiàn)者是大名鼎鼎的 鳥哥 @Laruence 。另外本臺前方記者(就是我)剛剛從微博發(fā)來報(bào)道,鳥哥正在放大招,制造傳說中 PHP7 on JIT ,我大 PHP 的歷史車輪是無法阻擋的哈哈哈!:-P

安裝 illuminate/database

給 composer.json 增加一個(gè) require 項(xiàng):

"illuminate/database": "*"
運(yùn)行 composer update ,等待安裝完成。

使用 Eloquent

修改 public/index.php 為:

復(fù)制代碼 代碼如下:

<?php

use Illuminate\Database\Capsule\Manager as Capsule;

// Autoload 自動(dòng)載入

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ù)庫密碼):

復(fù)制代碼 代碼如下:

<?php

return [

  'driver'    => 'mysql',

  'host'      => 'localhost',

  'database'  => 'mffc',

  'username'  => 'root',

  'password'  => 'password',

  'charset'   => 'utf8',

  'collation' => 'utf8_general_ci',

  'prefix'    => ''

  ];

修改 models/Article.php :

復(fù)制代碼 代碼如下:

<?php

/**

* Article Model

*/

class Article extends Illuminate\Database\Eloquent\Model

{

  public $timestamps = false;

}

  

controllers/HomeController.php 無需改動(dòng)。

刷新,頁面依舊:

恭喜你!Eloquent 使用成功!

Eloquent 更多用法

Eloquent 異常強(qiáng)大 ,可以說是 Laravel 中 最特別 、 最有價(jià)值 的部分。
像 HomeController 中調(diào)用的 Article::first() ,之前用了十幾行代碼,現(xiàn)在什么都不用干,繼承一個(gè)類就行了。

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 接受采訪時(shí)曾表示,Eloquent 是整個(gè) Laravel 中最難實(shí)現(xiàn)的部分。我在調(diào)試的時(shí)候也發(fā)現(xiàn), MFFC/vendor/illuminate/database/Illuminate/Database/Eloquent/Model.php 這個(gè)文件有 3000 多行......

目前建造一個(gè)豐滿的可以上手使用的 PHP 框架的工作就算是基本完成了,接下來我會繼續(xù)完善 MFFC 框架,讓她更加豐富、好用!

以后可能會有 模板引擎、表單驗(yàn)證、發(fā)送郵件、權(quán)限體系管理、異步隊(duì)列、視頻音頻處理(亂入:-D) 等內(nèi)容,敬請關(guān)注還未出世的 讓我們開了又開的 Composer 包 系列文章。

謝謝大家的閱讀和陪伴!再見!

相關(guān)文章

  • PHP圖片水印類的封裝

    PHP圖片水印類的封裝

    這篇文章主要為大家詳細(xì)介紹了PHP圖片水印類的封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • php的declare命令及用法詳解

    php的declare命令及用法詳解

    declare是用來設(shè)定一段代碼的執(zhí)行指令,declare結(jié)構(gòu)用于全局范圍,影響到其后的所有代碼,今天小編給大家普及php的declare命令及用法知識,感興趣的朋友一起看看吧
    2021-06-06
  • PHP curl模擬登錄帶驗(yàn)證碼的網(wǎng)站

    PHP curl模擬登錄帶驗(yàn)證碼的網(wǎng)站

    最近接了個(gè)項(xiàng)目,其中有需求是要登錄帶驗(yàn)證碼的網(wǎng)站,獲取數(shù)據(jù),但是我們不可能人為的一直去記錄數(shù)據(jù),想通過自動(dòng)采集的方式進(jìn)行,下面小編給大家?guī)淼南嚓P(guān)代碼,對php curl 模擬登錄帶驗(yàn)證碼的網(wǎng)站感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • 淺析php單例模式

    淺析php單例模式

    本文從設(shè)計(jì)模式的概念說起,講述了php設(shè)計(jì)模式中的單例模式,均是些基礎(chǔ)性知識,給初學(xué)者們一個(gè)提高的契機(jī)。
    2014-11-11
  • php截取字符串之截取utf8或gbk編碼的中英文字符串示例

    php截取字符串之截取utf8或gbk編碼的中英文字符串示例

    php中自帶strlen是返回的字節(jié)數(shù),對于utf8編碼的中文返回時(shí)3個(gè),不滿足需求,下面給大家提供一個(gè)方法來完成這樣的功能
    2014-03-03
  • 程序員的表白神器“520”大聲喊出來

    程序員的表白神器“520”大聲喊出來

    程序員520也不忘表白,下面是一位程序員盆友寫的代碼來慶祝這個(gè)520節(jié)日,一起看看吧
    2016-05-05
  • Yii2中添加全局函數(shù)的方法分析

    Yii2中添加全局函數(shù)的方法分析

    這篇文章主要介紹了Yii2中添加全局函數(shù)的方法,結(jié)合實(shí)例形式對比分析了2種添加全局函數(shù)的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05
  • 詳解Window7 下開發(fā)php擴(kuò)展

    詳解Window7 下開發(fā)php擴(kuò)展

    這篇文章主要介紹了詳解Window7 下開發(fā)php擴(kuò)展 的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • ThinkPHP3.2.1圖片驗(yàn)證碼實(shí)現(xiàn)方法

    ThinkPHP3.2.1圖片驗(yàn)證碼實(shí)現(xiàn)方法

    這篇文章主要介紹了ThinkPHP3.2.1圖片驗(yàn)證碼實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了thinkPHP3.2.1生成圖片驗(yàn)證碼過程中遇到的問題及相應(yīng)的解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • thinkphp路由規(guī)則使用示例詳解和偽靜態(tài)功能實(shí)現(xiàn)(apache重寫)

    thinkphp路由規(guī)則使用示例詳解和偽靜態(tài)功能實(shí)現(xiàn)(apache重寫)

    這篇文章主要介紹了thinkphp路由規(guī)則使用示例詳解和偽靜態(tài)功能實(shí)現(xiàn)(apache重寫),需要的朋友可以參考下
    2014-02-02

最新評論