第1章 元件化開發與composer使用
為藝術家創造的PHP框架,優秀的設計思想和設計方法完美融合在一起,包括元件化開發、IoC容器技術、分散式應用架構設計這三部分內容。
1.1 元件化開發
目的:能夠快速使用已有的程式模組構建專案,甚至可以快速更換專案中的相應模組而不需要修改系統中其他部分的程式碼,需要所有的程式碼按照一定的規範和介面來實現。
例如:Laravel底層使用了很多Symfony框架中的元件
1.2 composer使用
1.2.1 composer 安裝
1.2.2 元件安裝
composer提供了元件資源庫packagist
1 在專案根目錄下建立一個名為composer.json的檔案(記錄元件名及版本)
通過composer install安裝
1.2.3 自動載入
只要在專案中通過require 'vendor/autoload.php'語句引入這個檔案,在使用下載的元件時就可以自動載入了。
實現檔案自動載入需要有相應的規範進行約束,其中包括PSR-0、PSR-4、classmap和files四種規範形式,其中PS4-4是目前使用的規範。這四種規範形式本質上定義了一個名稱空間到實際檔案的對映關係,通過這個對映關係,可以利用名稱空間類精確定位到相應檔案的具體路徑,進而實現autoload自動載入功能。
Laravel框架中的APP名稱空間下類的自動載入設定如下:
PSR-0和PSR-4規範定義了兩個對映關係,即名稱空間"App\\"對應目錄"app/"。在PSR-4規範下,假設建立一個app/User.php檔案,則該檔案需要包含App\User類,也就是說new \App\User()語句例項化App\User類時,autoload會根據定義的PSR-4規範到目錄app/下查詢User.php檔案;在PSR-0範圍下,則需要建立一個bpp/Bpp/User.php檔案,其中包含Bpp\User類。區別在於PSR-4規範的目錄不需要新增名稱空間APP,而PSR-0規範的目錄需要新增名稱空間Bpp
對於classmap會掃描指定目錄中的所有的.php和.inc檔案,並載入到vendor/composer/autoload_classmap.php檔案中,在該檔案會實現一個具體類與檔案對映的關聯陣列,也可以直接精確指定一個檔案。通過classmap可以生成不遵循PSR-0和PSR-4規範的自動載入類庫。
對於每次程式執行時都需要載入的檔案,可以通過files規範實現自動載入,通常經常使用的函式庫檔案就使用這種載入方式。
1.2.4 composer命令列簡介
1.3 手動構建Laravel框架
1.3.1 專案初始化
通過composer update命令執行成功後lara資料夾下會自動生成自動自動載入檔案
1.3.2 新增路由元件
在Laravel框架中一些功能的生成都需要服務容器來實現,服務容器用於服務註冊和解析,也就是說服務容器註冊能夠實現某些功能的例項或回撥函式,當需要使用該功能從伺服器中獲取相應的例項來完成。
1.3.3 新增控制器模組
1.3.4 新增模型元件
1.3.5 新增檢視元件