摘要:引入了命名空間,這是規(guī)劃在中的功能,所以在一定程度上其實(shí)就是,的下一個(gè)版本是,即將發(fā)布,主要貢獻(xiàn)者是大名鼎鼎的鳥哥。使用修改為自動(dòng)載入路由配置新增注意替換數(shù)據(jù)庫密碼修改無需改動(dòng)。作者接受采訪時(shí)曾表示,是整個(gè)中最難實(shí)現(xiàn)的部分。
原文發(fā)表在我的個(gè)人網(wǎng)站:利用 Composer 一步一步構(gòu)建自己的 PHP 框架(四)——使用 ORM
本教程示例代碼見 https://github.com/johnlui/My-First-Framework-based-on-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 包。
本篇是本系列最后一篇,接下來我可能會(huì)以 讓我們開了又開的 Composer 包 為系列標(biāo)題分享一些體驗(yàn)和感悟,將主要發(fā)表在我的個(gè)人網(wǎng)站 歲寒 上。
我們選擇 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 為:
addConnection(require "../config/database.php"); $capsule->bootEloquent(); // 路由配置 require "../config/routes.php";
新增 config/database.php(注意替換數(shù)據(jù)庫密碼):
"mysql", "host" => "localhost", "database" => "mffc", "username" => "root", "password" => "password", "charset" => "utf8", "collation" => "utf8_general_ci", "prefix" => "" ];
修改 models/Article.php:
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 框架的工作就算是基本完成了,接下來我會(huì)繼續(xù)完善 MFFC 框架,讓她更加豐富、好用!
以后可能會(huì)有 模板引擎、表單驗(yàn)證、發(fā)送郵件、權(quán)限體系管理、異步隊(duì)列、視頻音頻處理(亂入:-D) 等內(nèi)容,敬請關(guān)注還未出世的 讓我們開了又開的 Composer 包 系列文章。
謝謝大家的閱讀和陪伴!再見!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/20858.html
摘要:原文發(fā)表在我的個(gè)人網(wǎng)站利用一步一步構(gòu)建自己的框架一基礎(chǔ)準(zhǔn)備一統(tǒng)天下的時(shí)代已經(jīng)到來白巖松一個(gè)時(shí)代結(jié)束了另一個(gè)時(shí)代開始了??蚣芸苫ビ眯孕〗M,簡稱,成立于年。 原文發(fā)表在我的個(gè)人網(wǎng)站 利用 Composer 一步一步構(gòu)建自己的 PHP 框架(一)——基礎(chǔ)準(zhǔn)備 『Composer 一統(tǒng)天下的時(shí)代已經(jīng)到來!』 ——白巖松 一個(gè)時(shí)代結(jié)束了,另一個(gè)時(shí)代開始了。 Framework ...
摘要:所以接下來我們要做的事情就是讓框架更加規(guī)范,更加豐滿。正式開始規(guī)劃文件夾新建文件夾,在中創(chuàng)建三個(gè)文件夾,開始正式開始踏上的征程。調(diào)用視圖修改為將包含查詢結(jié)果的數(shù)組返回。下一步利用一步一步構(gòu)建自己的框架四使用 終于可以 一次編寫,到處發(fā)布 了,淚流滿面! 今天凌晨我從一點(diǎn)多開始搞了四個(gè)小時(shí)到 5:20,終于搞出了個(gè) Emlog 的 MarkDown 插件!歡迎 Emloger ...
摘要:我們先從目前用著最不爽的地方視圖裝載下手。實(shí)現(xiàn)裝載器完成基礎(chǔ)準(zhǔn)備以后我們正式開始制造視圖裝載器。下一步利用完善自己的框架二發(fā)送郵件 原文發(fā)表在我的個(gè)人網(wǎng)站:利用 Composer 完善自己的 PHP 框架(一)——視圖裝載 本教程示例代碼見 https://github.com/johnlui/My-First-Framework-based-on-Composer 回顧 經(jīng)...
摘要:原文發(fā)表在我的個(gè)人網(wǎng)站利用一步一步構(gòu)建自己的框架二構(gòu)建路由本教程示例代碼見上一篇中我們已經(jīng)建立了一個(gè)空的項(xiàng)目,本篇將講述如何構(gòu)建路由。從使用框架是為了提高開發(fā)效率的角度來看,框架的本質(zhì)就是路由。下一步利用一步一步構(gòu)建自己的框架三設(shè)計(jì) 原文發(fā)表在我的個(gè)人網(wǎng)站 利用 Composer 一步一步構(gòu)建自己的 PHP 框架(二)——構(gòu)建路由 本教程示例代碼見 https://github.c...
摘要:原文發(fā)表在我的個(gè)人網(wǎng)站系列入門教程一最適合中國人的教程本教程示例代碼見大家在任何地方卡住,最快捷的解決方式就是去看我的示例代碼。在此我推薦一個(gè)全量中國鏡像。 原文發(fā)表在我的個(gè)人網(wǎng)站:Laravel 5 系列入門教程(一)【最適合中國人的 Laravel 教程】 本教程示例代碼見:https://github.com/johnlui/Learn-Laravel-5 大...
閱讀 3505·2021-09-02 09:53
閱讀 1830·2021-08-26 14:13
閱讀 2789·2019-08-30 15:44
閱讀 1348·2019-08-30 14:03
閱讀 2005·2019-08-26 13:42
閱讀 3046·2019-08-26 12:21
閱讀 1333·2019-08-26 11:54
閱讀 1927·2019-08-26 10:46