摘要:但也因?yàn)閼?yīng)有盡有使得框架的性能比其他高性能框架低了些,為此給了幾個解決方案路由緩存經(jīng)有關(guān)部門研究,路由緩存可有效加快訪問速度以上。有朋友說框架最重要的東西是路由,我倒認(rèn)為最重要的是框架中異于其他框架且能解決痛點(diǎn)的東西,如的。
在程序界的遠(yuǎn)古時期,大神們手持鍵盤敲著機(jī)器語言跟龐大的機(jī)器打著交道,那時候機(jī)器語言還沒有語義和語法,更沒有封裝的概念。后來進(jìn)化到匯編語言,C語言時期,基礎(chǔ)的功能特性就已經(jīng)能滿足當(dāng)時的需求了,比如函數(shù)封裝使其得于復(fù)用,但隨著計(jì)算機(jī)的普及,操作系統(tǒng)的到來,面向過程語言已無法繼續(xù)滿足復(fù)雜的需求。
歷史的變遷促使了高級語言的誕生,到了我們這個階段,已經(jīng)是高級語言百花齊放的時代,Java、Python、Ruby、PHP、Javascript、Objective-C、Android 等等都在各自領(lǐng)域中發(fā)揮著重要的作用。而各大語言的框架更是集自身語言和其他優(yōu)秀語言特性之大成者,以PHP來說,Laravel、Symfony、CodeIgniter、ThinkPHP 等都是其優(yōu)秀的思想結(jié)晶之一,其中的 Laravel 就是其創(chuàng)始人 Taylor Otwell 結(jié)合了 Ruby on Rails 的思想開發(fā)出來的,并且以強(qiáng)大的框架生態(tài)和組件化思想成為全世界最熱門的PHP框架沒有之一。
隨著近兩年中文文檔的完善,Laravel 漸漸被國內(nèi)的開發(fā)者所使用,去年我們開始采用「組件化」思路來建設(shè)整個服務(wù),業(yè)務(wù)重構(gòu)選擇了 Laravel 來作為后端的業(yè)務(wù)框架,到現(xiàn)在已經(jīng)一年時間,我對 Laravel 框架也有了一些了解,從路由到單元測試,Laravel 幾乎無所不能,它不局限于“神圣”的MVC模式,讓開發(fā)者發(fā)揮自己的想象力去搭建自己想要的業(yè)務(wù)架構(gòu),不用再想著什么類要放在Model文件夾,而是怎么劃分層次,每個層次需要干什么,就像是樂高積木,你可以根據(jù)圖紙或者自己想象出的變形金剛的樣子一層層的搭建出最后的模型。
在 Laravel 中,高級積木(組件)可以用 Composer 管理工具來引入,Composer 作為PHP中最好用的依賴管理工具之一(或許沒有之一)已經(jīng)被很多框架使用,就不詳述它的故事了。絕大多數(shù)的 Laravel 組件都能在 Github 上找到,如果找不到肯定是你的搜索方式有問題,換了搜索方式還找不到,那就自己寫一個。Composer 有這么一些常用指令:
composer install - 如有 composer.lock 文件,直接安裝,否則從 composer.json 安裝最新擴(kuò)展包和依賴; composer update - 從 composer.json 安裝最新擴(kuò)展包和依賴;
composer update vendor/package - 從 composer.json 或者對應(yīng)包的配置,并更新到最新;
composer require new/package - 添加安裝 new/package, 可以指定版本,如: composer require new/package ~2.5.
我在引入和更新組件時都是使用 composer require ,這樣子做的原因是因?yàn)樵谏a(chǎn)環(huán)境中使用其他兩種方法來引入的話,會把其他組件也給更新了,導(dǎo)致不兼容的情況發(fā)生,具體看這篇文章:「正確的 Composer 擴(kuò)展包安裝方法」。
如果是 Composer 的「組件化」讓我采用了這個框架來重構(gòu),那你就大錯特錯了,真正讓我著迷的是 Laravel 的核心「Ioc容器」,它有效解決了對象依賴的問題,舉個栗子:
要實(shí)例化一個孩子對象出來,必須要實(shí)例化出爸爸對象和媽媽對象,用原本的對象依賴調(diào)用方式就是這樣的:
$father = new Father(); $mother = new Mother(); $child = new Child($father, $mother);
從編程角度來說,依賴關(guān)系越復(fù)雜,可變性就會越低,而且這么寫等于暴露了三個對象給用戶,是不可取的。
從現(xiàn)實(shí)角度來看,我只想知道你叫什么名字,你連你爸媽的信息都告訴我了,這......不合適吧。
上面的代碼用 Laravel 來寫會是這樣:
$child = app()->make(‘Child’);
接著 Ioc 就會幫你調(diào)用依賴于 Child 的所有類,并且賦予 Child 對象,整個過程只需要一句代碼,甚至能更簡潔:
$child = app(‘Child’);
Ioc 的好用之處還有很多,基本上 Laravel 的基礎(chǔ)服務(wù)都是圍繞著 Ioc 來搭建的,Router、Middleware、Eloquent ORM等等等等,如果你想感受下 Ioc 的魔力,看源碼吧。
在 Ioc 的基礎(chǔ)上,各個子系統(tǒng)也有著自己的閃光點(diǎn),Router 的 RESTful 定義,Eloquent ORM 的預(yù)加載查詢優(yōu)化等等讓整個框架生態(tài)變得多樣化和易用。但也因?yàn)閼?yīng)有盡有使得框架的性能比其他高性能框架低了些,Laravel 為此給了幾個解決方案:
路由緩存;經(jīng)有關(guān)部門研究,路由緩存可有效加快訪問速度500ms以上。
源碼緩存;把源碼集合在一個類中,減少資源調(diào)用耗費(fèi)的時間。
數(shù)據(jù)查詢優(yōu)化;就是上面提到的 Eloquent ORM 的預(yù)加載查詢優(yōu)化。
這些都做了的話,性能不會差到哪里去,我認(rèn)為中小體量的網(wǎng)站的瓶頸是在數(shù)據(jù)IO,PHP性能還不用太糾結(jié),如果真達(dá)不到你的性能要求,請轉(zhuǎn)用 Lumen 或者其他框架。
有朋友說 PHP 框架最重要的東西是路由,我倒認(rèn)為最重要的是框架中異于其他框架且能解決痛點(diǎn)的東西,如 Laravel 的 Ioc。讓我們改變編程思維是很少框架能做到的,Laravel 能做到這點(diǎn),正所謂框架常有,好框架難求,如果你問我 Laravel 好不好,是不是最好,我只能用鄧小平爺爺?shù)拿愿嬖V你:
不管黑貓白貓,捉到老鼠就是好貓。
點(diǎn)此查看我的更多文章。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21800.html
摘要:的現(xiàn)狀目前是版本,是基于開發(fā)。入口文件啟動文件和配置文件框架的入口文件是。在路由中指定控制器類必須寫全命名空間,不然會提示找不到類。目前支持四種數(shù)據(jù)庫系統(tǒng)以及。使用時發(fā)生錯誤,因?yàn)樵谖募?,的默認(rèn)驅(qū)動是。 最近使用 Lumen 做了 2 個業(yè)余項(xiàng)目,特此記錄和分享一下。 Lumen 的介紹 在使用一項(xiàng)新的技術(shù)時,了解其應(yīng)用場景是首要的事情。 Lumen 的口號:為速度而生的 La...
摘要:關(guān)于作者程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事和前端開發(fā),使用和,端使用混合式開發(fā)。個人網(wǎng)站最近剛寫了一個手機(jī)在線播放的電影站開發(fā)混合式系列第集技術(shù)選型是一套簡潔優(yōu)雅的開發(fā)框架。 關(guān)于作者 程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個人網(wǎng)站:http://...
摘要:關(guān)于作者程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事和前端開發(fā),使用和,端使用混合式開發(fā)。個人網(wǎng)站最近剛寫了一個手機(jī)在線播放的電影站開發(fā)混合式系列第集技術(shù)選型是一套簡潔優(yōu)雅的開發(fā)框架。 關(guān)于作者 程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個人網(wǎng)站:http://...
摘要:很多程序員使用創(chuàng)建他們的應(yīng)用程序。是一個免費(fèi)開源的應(yīng)用程序框架。是的模板語言,對藝術(shù)家友好,這個程序員的命令行工具可以在中工作使用插件和幫助器我們可以進(jìn)一步擴(kuò)展對應(yīng)用的支持。 很多PHP程序員使用 [laravel] 創(chuàng)建他們的應(yīng)用程序。[laravel] 是一個免費(fèi)開源的PHP web應(yīng)用程序框架。它基于多個Symfony 組件,提供了一個開發(fā)框架,包括authentication,...
摘要:介紹為速度而生的框架。是官方給出的例子,直接拷貝命名為。一般來說,我們應(yīng)該避免使用末尾帶斜杠的。因?yàn)樗绻也坏轿募?,就會自動在末尾加個斜杠,嘗試尋找目錄下的文件等等,具體是在中配置。方案修改修改的配置文件,將指向重啟。 介紹 Lumen:為速度而生的 Laravel 框架。 Lumen 是 Laravel 的作者(Taylor Otwell)的又一力作。簡單、快速、優(yōu)雅的它的特點(diǎn)...
閱讀 2091·2019-08-30 15:53
閱讀 3084·2019-08-30 15:44
閱讀 2941·2019-08-30 14:11
閱讀 2935·2019-08-30 14:01
閱讀 2726·2019-08-29 15:16
閱讀 3796·2019-08-29 13:10
閱讀 1269·2019-08-29 10:56
閱讀 2554·2019-08-26 13:58