① Composer 自動載入原理
到達 composer 工作區
實現自動載入的過程可簡單分為三步:
下面演示 laravel 四種聲明載入標準的組件,是如何歸納的。
文件預載入,框架啟動時便被 include ,通常文件中提供一些函數方法方便我們使用,如經常用的 dd() 。
"files:["src/Illuminate/Foundation/helpers.php"]" 寫入 /composer/autoload_files.php ,
直接映射文件真實路徑。 這是簡單粗暴的,因此這種方式效率是最高的。
"classmap": ["hamcrest"] , 寫入 /composer/autoload_classmap.php
當 use Hamcrest\Arrays\IsArray; 時,可直接在 classmap 的數組中找到它,是不是很粗暴呢。
這是最常用的載入標准。 "psr-4": {"App\": "app/"} 寫入 autoload_psr4.php
只要是 app/ 目錄下的文件,且名命空間符合 psr-4 標準的類文件都能被自動載入。如 use AppTest => app/Test.php 。而 classmap 方式不可以,這樣你可以在 app/ 下自由的增加 / 刪除類文件了。
這里提一下,前面說 classmap 方式是最高效的,而 composer mp-autoload 可以將通過 psr-4 規范載入的文件 「落盤」,即寫入 autoload_classmap.php 。從而起到加速的作用,官方建議生產環境時執行 composer mp-autoload --optimize 來優化項目的自動載入速度。
為了說明 composer mp-autoload 的作用,我在 app 目錄下建立 Test.php
執行 composer mp-autoload 後,發現在 autoload_classmap.php 與 autoload_static.php (稍後再提及)中找到了它。
而 composer mp-autoload --optimize 的作用是進行優化(optimize),清理無效索引空間另外在 /composer 生成了 user 緩存文件。
和 psr-4 類似,只是載入規則有所不同。官方已棄用,但 laravel 有的組建包還是在用的,composer 仍然支持向下兼容。 "psr-0": {"Mockery": "library/"} 寫入 autoload_namespaces.php 。
註: autoload_static.php 它包含了四個文件的全部映射,是為了精簡篇幅這里不做介紹了
② phpstorm怎麼安裝composer
方法/步驟
1
網路搜索下載Composer-Setup.exe 安裝軟體包
2
下載成功!
3
准備安裝軟體,雙擊軟體就可以安裝此軟體 默認安裝裝就可以了,並會自動搜索PHP.exe的安裝路徑。
4
稍等一會,下載組件
5
顯示此頁面表示安裝完成!如果報錯 就檢查 PHP擴展的OpenSSL 有沒有打開
6
驗證是否成功。打開win+R 》 cmd 輸入 composer,顯示如下界面 表示安裝成功!