前言:這裡不介紹如何安裝composer,namespace的定義,psr的解釋,僅介紹如何實踐自動載入和元件化開發的基本了解。
以前開發php專案的時候,都需要在同一個頁面上include或require好幾支class進來
頁面非常凌亂,每個class路徑也不一樣,在開發的時候容易增加不必要的小錯誤,得多花時間來debug。
composer的自動載入機制在這點完美解決了目前的問題,只需要在專案的根目錄裡增加一個「 composer.json 」 檔案就行了!
接著在裡面加上自動載入的psr-4規則
{
"autoload": {
"psr-4": {
"DB\\": "DB/",
"Tool\\": "Tools/"
}
}
}
DB/、Tools/,分別是你專案裡從根目錄算下來的資料夾名稱,假設你的專案叫做BookStore,這兩個資料夾分別會在BookStore/DB、BookStore/Tools,而前面紅色字體部分則是它在這個專案裡面定義的名稱空間(namespace),紅色的部分要取什麼名字都可以。
接著在根目錄執行:composer install
會看到專案裡面多了一個vendor的資料夾。
composer幫你把所有東西都搞定了,所以不用再自己動手實際刻一個autoload出來。
接著在每一個要引入的class表頭加上namespace,例如HashMap在:
值得一提的是,namespace其實要取什麼都可以,並不一定要跟composer.json裡設定的一樣,只要use的時候,注意來源就好,不過同一個資料夾命名統一的話也會比較好管理。
現在要用別支程式碼只需要require一次composer幫我們產生的autoload.php檔案,接著在要引入的地方使用use,接著就不用去管路徑在哪,只要該程式碼有設定namespace就行了
接著,把剛剛那一大堆的include程式碼轉換一下
3. 複製指令列(標題正下方)到專案的根目錄裡執行:
4. 大功告成!
使用方式跟上面提及的方式一樣:
以前開發php專案的時候,都需要在同一個頁面上include或require好幾支class進來
頁面非常凌亂,每個class路徑也不一樣,在開發的時候容易增加不必要的小錯誤,得多花時間來debug。
composer的自動載入機制在這點完美解決了目前的問題,只需要在專案的根目錄裡增加一個「 composer.json 」 檔案就行了!
接著在裡面加上自動載入的psr-4規則
{
"autoload": {
"psr-4": {
"DB\\": "DB/",
"Tool\\": "Tools/"
}
}
}
DB/、Tools/,分別是你專案裡從根目錄算下來的資料夾名稱,假設你的專案叫做BookStore,這兩個資料夾分別會在BookStore/DB、BookStore/Tools,而前面紅色字體部分則是它在這個專案裡面定義的名稱空間(namespace),紅色的部分要取什麼名字都可以。
接著在根目錄執行:composer install
會看到專案裡面多了一個vendor的資料夾。
composer幫你把所有東西都搞定了,所以不用再自己動手實際刻一個autoload出來。
接著在每一個要引入的class表頭加上namespace,例如HashMap在:
將HashMap.php的標頭加上namespace Tool,也就是我們在composer.json裡的紅色字體
現在要用別支程式碼只需要require一次composer幫我們產生的autoload.php檔案,接著在要引入的地方使用use,接著就不用去管路徑在哪,只要該程式碼有設定namespace就行了
接著,把剛剛那一大堆的include程式碼轉換一下
程式碼其他實作的部分完全不用調整,引入的部分則是被梳理的不錯。
另外,之前php引用第三方元件的時候,都是整包下載下來之後,再把整個資料夾丟到目前的專案裡,這部分composer也幫你搞定了:
- https://packagist.org/ 尋找須引入的第三方元件
- 假設是phpmailer
3. 複製指令列(標題正下方)到專案的根目錄裡執行:
composer require phpmailer/phpmailer
使用方式跟上面提及的方式一樣:
沒有留言:
張貼留言