laravel 設計思想簡單了解


服務容器

laravel框架中 服務容器是整個系統功能調度配置的核心,在系統運行過程中動態的為系統提供需要的服務 從而實現了解耦

控制反轉(IOC)

控制反轉是一種設計模式 主要解決了系統組件之間的相互依賴關系 。

工廠模式 工廠模式中 一般會有一些共同的接口 通過調用不同的類 來實現相同的結果 比如出去旅游 有的人騎自行車 那就new一個自行車類 有的人可能坐火車 還有的人可能坐飛機 輪船或者其他的。也就是說 工廠模式中 需要哪些類 則工廠就生成哪些功能 這個時候就需要動態的修改工廠 但隨着需要的功能越來越多 那么程序必然會變得龐大 耦合性非常高。

而控制反轉就是要解決上面的問題 它將組件間的依賴關系 從程序內部提取到外部容器來管理 而依賴注入 是指組件的依賴通過外部參數或者其它形式注入到容器 等到需要的時候 在從容器中取出來即可
圖片來自 http://blog.xiaohansong.com/2015/10/21/IoC-and-DI/

服務提供器 (Service Providers)

為了讓依賴注入的代碼不至於寫亂,Laravel 搞了一個 服務提供器(Service Provider)的東西,它將這些依賴聚集在了一塊,統一申明和管理,讓依賴    變得更加容易維護。 

兩種方式添加服務

  • 1.要在每個環境下都要加載 編輯/config/app.php 將類加到providers數組中即可自動加載
  • 2.按需加載 根據不同環境加載 /app/Providers/AppServiceProvider.php 下面的 register方法 通過判斷不同的環境然后加載不同的服務

門面模式(Facade)

為應用程序的服務容器中可用的類提供了一個「靜態」接口 Laravel自帶的門面,以及創建的自定義門面,都會繼承自Illuminate\Support\Facades\Facade基類。門面類只需要實現一個方法:getFacadeAccessor。正是getFacadeAccessor方法定義了從容器中解析什么,然后Facade基類使用魔術方法從你的門面中調用解析對象。
好處1 不需要收到New對象 簡化了書寫
好處2 實現了統一的API 隱藏內部實現 當需要換一種類實現 也不需要改動太多代碼

總結

所以有了控制反轉(Inversion of Control)和門面模式(Facade),實際還有 服務提供器(Service Providers)和別名(Alias),我們創建自己的類庫和擴展 Laravel 都會方便很多。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM