組件、框架、Packagist、Composer

組件是一組打包的代碼,是一系列相關的類、接口和Trait,用於幫助咱們解決PHP應用中某個具體問題。html

優秀的PHP組件具有如下特性:laravel

  • 做用單一:專一於解決一個問題,並且使用簡單的接口封裝功能
  • 小型:小巧玲瓏,只包含解決某個問題所需的最少代碼
  • 合做:PHP組件之間能夠良好合做,組合在一塊兒實現大型項目
  • 測試良好:自己提供測試,並且有充足的測試覆蓋度
  • 文檔完善:應該提供完善的文檔,能讓開發者輕易安裝、理解和使用

框架,從某種意義上來講,Laravel也是個基於組件開發的框架(核心組件是自身的Illuminate庫,功能實現上則大量依賴第三方組件)。json

應該使用組件仍是框架呢?composer

答案是,使用正確的工具作正確的事,若是能經過一些PHP組件快速實現小型項目,那就使用組件,若是有多個團隊成員開發大型項目,並且能從框架提供的約定準則和結構中受益,那就使用框架。框架

Packagist查找PHP組件的社區。工具

Composer則是安裝PHP組件的工具,是PHP的依賴管理器,運行在命令行中,只要告訴Composer須要哪些組件,Composer會下載並把這些組件自動加載到你的項目中。post

Composer和Packagist緊密合做,若是你告訴Composer想要使用 guzzlehttp/guzzle 組件,Composer會從Packagist中獲取 guzzlehttp/guzzle 組件,找到這個組件的倉庫地址,肯定要使用哪一個版本,還能找出這個組件的依賴,而後把 guzzlehttp/guzzle 組件及其依賴下載到你的項目中。此外,Composer會爲項目中的全部PHP組件自動生成符合PSR標準的自動加載器,有效地抽象了依賴管理和自動加載。測試

 

Composer下載各個PHP組件時,會檢查每一個組件的 composer.json 文件,肯定如何加載該組件,獲得這個信息後,Composer會在本地爲該組件建立一個符合PSR標準的自動加載器。這樣咱們就能夠實例化項目中的任何PHP組件,這些組件按需自動加載。spa

 composer.lock 文件中會列出項目使用的全部PHP組件,以及組件的具體版本號,這實際上是鎖定了項目,讓項目只能使用具體版本的PHP組件。這樣的好處是,composer會下載這個文件中列出的具體版本,而無論Packagist中可用的最新版本是多少。命令行

 若是確實要下載最新版本的組件並更新composer.lock,可使用composer update命令。

 

參考文檔:https://laravelacademy.org/post/4506.html

相關文章
相關標籤/搜索