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