真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Laravel框架的核心架構(gòu)是什么

這篇文章主要介紹Laravel框架的核心架構(gòu)是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元鐵東做網(wǎng)站,已為上家服務,為鐵東各地企業(yè)和個人服務,聯(lián)系電話:13518219792

?
使用過larave框架的朋友都知道laravel框架里面除了提供一些基本的功能(如控制器、視圖、模型)之外,還有中間件、門面、契約等,這些東西是如何在laravel框架運用起來的呢?今天就和大家詳聊一下。

首先應該了解laravel框架的架構(gòu)模式(設計核心,laravel 框架是使用服務組件化的開發(fā)模式開發(fā)的,laravel框架就是由不同的服務組件構(gòu)成的)

laravel 里面多個服務提供者構(gòu)成了laravel組件。分層設計:把相同功能的類庫放在同一個文件夾里面。
laravel框架有多個類組成服務,由多個服務組成組件。類  -> 服務  ->  組件
laravel使用組件化的開發(fā)模式,多個類 -> 服務 -> 組件,多個類組成服務,多個服務構(gòu)成組件。

多個組件提供不同的服務,然后多個服務構(gòu)成我們的項目。

請求生命周期
大概的流程如圖:
Laravel框架的核心架構(gòu)是什么

理論上,生命周期主要有這么些階段,但其中,開發(fā)者大多數(shù)只需關注路由、中間件、控制器、閉包函數(shù)、邏輯處理等幾步
當然,每一步的內(nèi)部,還是會有更多細化的執(zhí)行流程,在這里,一般不深入研究框架或改造框架,很少會細化研究,但研究底層,依舊是學習的好選擇。

服務
說的就是提供給你所需要的東西,在laravel里面所提供的服務有 認證服務、數(shù)據(jù)庫服務、緩存服務、隊列服務等等。laravel框架所有服務都定義在了app/config/app.php 里面

?
服務提供者
可以給你提供一組服務的東西就是服務提供者,laravel里面如上所示其實定義的服務器提供者,比如IlluminateAuthAuthServiceProvider::class,提供認證服務的服務提供者。IlluminateCacheCacheServiceProvider::class,提供緩存服務的服務提供者

好處:開發(fā)者可以節(jié)省下更多的精力去處理項目邏輯,且不同開發(fā)個體之間能達到一定默契,最重要的是,項目達到分層解耦,業(yè)務邏輯只依賴于服務,并不依賴于服務底層的實現(xiàn)。
解耦之后,我們可以任意升級或自定義服務的底層實現(xiàn),只要確保底層類實現(xiàn)了該服務

總結(jié):其實服務是一個抽象的概念,服務器提供者是完成這個抽象概念的具體實施者

服務容器
把所有的服務放在一個盒子里,存放服務的容器。laravel里面的服務容器位于

vendor/laravel/frameworksrcilluminateContainerContainer.php.

Container.php  就是laravel框架的服務容器。

契約
用來規(guī)劃服務提供者的格式、方法、參數(shù)等,給服務提供者規(guī)范了一定約束。所以在框架里面所有的契約都是接口,這樣才能規(guī)范服務提供者。

?
門面
門面再一次展示了Laravel在設計上的優(yōu)秀,它讓Laravel變得更加靈活易擴展,那么它的概念是:
1 為開發(fā)者提供服務容器中服務的靜態(tài)代理

2 它對服務訪問方式做了補充,之前使用服務必須獲取服務的實例,再調(diào)用服務的方法,但使用facade,就可以直接把服務當靜態(tài)對象來調(diào)用了。

3 config/app.php中服務別名alias大多數(shù)都使用了facade

4 使用facade是有風險的,并不是用的越多越好,這在手冊上有少量的介紹,但具體的,還是需要開發(fā)中去發(fā)現(xiàn)

?
laravel框架總體架構(gòu)圖
Laravel框架的核心架構(gòu)是什么

如上圖所示:laravel框架是由多個服務組件構(gòu)成的 -> 服務提供者(最下面的不同的服務組件)。
FoundationApplication 用來創(chuàng)建服務提供者,創(chuàng)建好之后保存在ContainerContainer 的服務容器里面,交由他管理,Application 要繼承 Container
為了約定服務提供者提供的服務,我們定義一個規(guī)范,這就是契約

對于我們的用戶(最上面的用戶)想使用laravel框架,必須通過控制器來使用(上面的Controller),使用laravel框架主要是使用laravel里面的服務提供者(上面的 new 服務),這樣就是最傳統(tǒng)的開發(fā)模式,和服務器容器沒有直接關系,如果laravel這樣設計的話,基本上和其他框架一樣,沒有任何優(yōu)勢。所以一般不怎么做。

由于有契約,契約是服提供者的接口,所以我們也可以直接使用契約,new 服務旁邊的黃色線。使用契約用注入的方式,這樣使用的不好之處是如果一個方法里面使用多個契約的話,我們就得注入多個契約,這樣代碼看起來不優(yōu)雅。

?
于是laravel里面就出現(xiàn)了門面,門面的出現(xiàn)方便我們優(yōu)雅的調(diào)用服務器提供者的類。由于每個服務提供者的類太長了如:

IlluminateCookieCookieServiceProvider::class,IlluminateDatabaseDatabaseServiceProvider::class,

所以又引出了別名,使用別名之后 簡化了我們調(diào)用的服務提供者的類。

事件:laravel里面的模型里面的事件,比如用戶對數(shù)據(jù)庫操作時做的一個監(jiān)聽。對整個項目運行進行監(jiān)聽,有監(jiān)聽的動作。類似tp5里面的鉤子和行為。
中間件:做用戶的請求做一定的過濾。

以上是“Laravel框架的核心架構(gòu)是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站名稱:Laravel框架的核心架構(gòu)是什么
路徑分享:http://weahome.cn/article/pceheh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部