大家好,歡迎收看猿話!
Composer是 php 用來管理依賴(dependency)關系的工具,類似NodeJs中的npm、Ruby中的bundler。使用Composer,你可以在自己的項目根目錄的composer.json中聲明所依賴的外部工具庫(libraries),然后在composer.json文件所在目錄執行composer install命令,Composer 就會幫你安裝這些依賴的庫文件。如下:
正因為Composer的這個優點,由于現在很多框架都支持使用composer進行組件管理,如ThinkPHP、Laravel等。
那為什么使用Composer下載的組件,就可以自動加載到項目中,而不需要再手動include呢?
這主要得益于PHP的自動加載功能。
什么是自動加載?
自動加載是PHP從5.0開始支持的一個功能,也就是當我們實例化一個不存在的類時,PHP會嘗試調用自動加載機制引入相應的類文件。
PHP自動加載機制有兩種方式,一種是通過__autoload(),另一種是通過spl_autoload_register()。PHP官方推薦使用第二種方式,因為第二種方式可以多次調用,更靈活,而且從PHP7.2開始,第一種方式也不再支持了。
當我們在composer.json文件所在目錄,執行composer install命令后,composer會創建vendor目錄,并將composer.json文件中,require字段指定的依賴組件,下載下來放置其中,同時還生成一個autoload.php文件。
這里的autoload.php是使用composer下載下來的組件可以自動加載到項目的關鍵。如果你打開文件,你會看到這一段代碼,如下:
這里表示使用Composer工具下載的組件,由composer組件來負責自動加載。
打開ComposerAutoloaderInita224064b63645c6fcb9c9a314d8b5a82類文件,你可以看到,如前面說的一樣,composer組件控制自動加載的核心代碼,使用spl_autoload_register()方法來注冊自動加載函數,實現文件的自動加載。
所以,要想項目中可以直接使用composer工具下載的依賴包,你只需要在項目中加載vendor/autoload.php文件即可,如下: