php框架所用到的核心概念,【PHP】PHP现代框架代表-Laravel框架核心技术特性
一.php語言特點及發展現狀
1.服務端腳本語言,自由度太大 ,一個業務邏輯可言寫在模型里,控制器里,也可以單獨封裝成一個類,甚至可以嵌入到html里,這樣勢必會造成混亂,業務邏輯散落在各處,尤其對于大型系統。除非有一個強制性的約定,對于靜態語言,比如java可以在編譯的時候來進行檢驗,但是解釋性的語言則不然。
2.PHP是弱類型語言。對于弱類型有的說是優點有的說是缺點,php中的變量可以不事先說明就可以賦值使用,并且可以動態改變它的類型和值而且在這過程中不會報任何錯誤。看起來得到了方便,但是也失去了條理性和安全性,在小項目中很靈活很方便,但是在大型項目中得不償失。
3.面向對象和面向過程共存,一個應用生命周期可以全部用面向過程也可以全部用面向對象去寫,這種情況在項目整合過程中會出現無法整合的情況,或者需要巨大的代價甚至重構。
4.代碼碎片化,魔術方法調用很多。
laravel是為了提高php大型開發效率而生,同時也提高了應用的健壯性,可維護性。
組件化開發,沒必要造輪子,比如laravel里面核心代碼也是用到部分symfony的代碼。
框架的一些核心也是組件的方式
二.laravel框架介紹
Laravel框架優點:
1.包含更多的功能,比如隊列,搜索,數據遷移,定時腳本。
2.通過Composer使用了豐富的第三方包。
3.設計思想先進,引入了門面,依賴注入,Ioc模式,等設計模式,擴展性很強。比如laravel框架中所有使用的服務功能,是由服務提供者存放到IOC容器中,當具體使用哪些服務時候,則直接從容器中獲取就行,這樣分離了服務提供者和使用者,服務使用者不需要關心服務是誰提供的,這樣就實現了解耦,當替換服務等時候就非常方便了。
4.社區活躍。
5.基于Laravel開源項目多。
Laravel技術特性:
Laravel擁有一個非常簡單的核心。
項目目錄非常簡單,如下圖
container類是負責組裝調度各種組建服務的容器,和web沒有什么關系,會將各種功能合理的組裝在一起,最終構成了一個大型的功能齊全的web框架。
盡管核心非常簡單,但是實現還是比較復雜的,并足以支撐大型的應用。
這些服務最終構成全站的功能。如果需要可以添加自定義服務或者第三方的包并注冊進去就可以自動加載。
每個功能可以理解成一個服務service。比如視圖渲染,路由請求攔截,權限驗證,緩存。對于很多php框架這些功能都是框架核心里提供的功能,固化在框架中,但對于laravel框架它們是獨立的模塊。通過提供器(provide)來把這些service注冊到laravel核心容器(container)中,最終構成一個強大web體系。
三.laravel核心概念
1.服務容器(Container)。
容器的概念就如同其名字一樣,容器就是用來盛裝東西的,我們可以往容器里存放東西,也可以提取東西,而在Laravel中容器存放的是一個個實例的對象或者服務,Laravel 的核心就是一個 IoC 容器。
為什么要使用容器?
這里要提到控制反轉Ioc(Inversion of Control)和DI(依賴注入),這是一種面向對象的設計思想,可以讓我們設計出松耦合、更優良的程序。
一個系統在沒有引入控制反轉的時候,就如上圖所示,對象Object A當依賴于對象Object B的時候,就需要去new一下Object B,而當需要Object C的時候又得在代碼里去new一下Object C。
中間有個Ioc容器,對象Object B在初始化時候往Ioc容器中注入自己一個實例,當對象Object A需要使用對象Object B提供的相應功能時候,并不需要new一下對象Object B,而是在Ioc容器中之間取出對象Object B的實例。這樣就實現了Object A與Object B之間的解耦。
一般控制反轉需要結合依賴注入來做,依賴注入是將一個實例變量傳入到對象中去,Laravel的依賴注入是利用反射(Reflection)來完成的。
2.服務提供者。
Laravel中的容器有綁定和解析的過程,綁定一般是由服務提供者來實現,一旦一個服務提供者被注冊了,那么就可以被提供服務,服務提供者都繼承serviceProvider這個類,這個類包含兩個方法boot 和 register 方法,在實現自定義服務提供者時大部分都是在處理這兩個方法。
我們可以將綁定的過程寫在這兩個方法里,那么這兩個方法有什么區別呢?
register 方法用于執行服務綁定處理。另外在 boot 方法中可以使用所有已綁定的服務。
3.Facades。
4.Contracts(契約)
四.laravel核心功能
1.隊列
laravel隊列服務為各種后臺隊列提供了統一的Api,允許延遲比較耗時的任務(例如郵件發送)的執行,從而提高系統響應速度。支持隊列失敗重啟功能。
2.中間件
3.搜索模塊
總結
以上是生活随笔為你收集整理的php框架所用到的核心概念,【PHP】PHP现代框架代表-Laravel框架核心技术特性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成果大爆发!中国“天眼”FAST已发现7
- 下一篇: 小米回应即将获得造车资质 官方:对造车业