PHP的作曲家?什么梗?
來……duo,rui,me,fa,suo,la,xi……

## (一)前言
多年前有一天,網上有關PHP出來了一個叫composer的名字,composer英文翻譯過來就叫“作曲家”,一開始大家都對這個名字特別陌生,后來漸漸都熟悉了,它無非就是一個公共類庫,有了這個庫,大家開發都統一了,也更方便了……
它的官網地址: https://getcomposer.org/
多年來大家都樂此不疲的用著,發現它確實給工作帶來了不少的便利:直接引用類庫,實現功能,我們只專注一些業務的開發。
## (二)驗證碼庫舉例
舉例來說,我們開發一個登錄頁面,一般情況下包含以下幾部分:
```
1、M: 連接數據庫
2、V : 登錄靜態頁面(有驗證碼)
3、C: 登錄控制器(驗證碼的加載 和驗證操作)
```
在登錄部分,有關于驗證碼的加載的顯示,以前我們怎么操作呢?
1、了解關于驗證碼寬、高、大小、干擾、生成圖片碼(英文、中文、數字、混合碼等)-或者網上找一個現成的好的類庫
2、引用類庫
操作這一系列過程需要幾個小時
現在寫這個類庫比較麻煩,現在只要以下幾步就搞定
1、 `composer require 驗證碼類庫地址`, 配置`相關參數`就可以實現了(PS:驗證碼類庫就是在官網找人氣最高的就可以了)
2、引用類庫
這無疑對開發是一種進步,是程序員的一種進步!我們更多的關注業務本身而不用關注類庫本身。composer我們也可以把它稱為 類庫包,大家都喜歡用!
但這種開發一個缺點是:我怎么找到合適的庫呢?因為PHP的版本太多了,同時驗證碼的版本也一直在更新!
## (三)依賴庫
驗證碼的庫說到這兒,因為它相對簡單,很多時候我們引用一個庫,會發現依賴庫太多了,我們拿目前微信最常用的庫 overtrue/wechat 為例來說明
下圖是引用方式

下圖是安裝這個庫用到的依賴類包的過程

從安裝過程中,我們可以看到有一句話: Package operations: 31 installs, 0 updates, 0 removals,即:安裝31個包,除了本身的1個包以外,依賴了30個包。
>30個包,這得有多少行代碼啊?我們都了解這些代碼了解嗎?不了解我們都敢用嗎?
答:不管多少代碼,我們都得用啊,因為它方便啊,它都是前人總結出來的結果!
## (四)困惑
我們開發時偶爾會發現一些問題
我們安裝庫1的時候,引用 `A、B、C、D`庫
我們安裝庫2的時候,引用 `A、E、F、G`庫
那么 A庫是公共都引用的庫,表面是沒有問題的?
但是安裝`庫1`用的是`A1.0`,安裝庫2的時候用的是`A2.0`,這樣的問題該怎么解決?