Composer 是 PHP 的一個依賴管理工具。它允許你申明項目所依賴的代碼庫,它會在你的項目中為你安裝他們。Composer 不是一個包管理器。是的,它涉及 "packages" 和 "libraries",但它在每個項目的基礎上進行管理,在你項目的某個目錄中(例如 vendor
)進行安裝。默認情況下它不會在全局安裝任何東西。因此,這僅僅是一個依賴管理。
對於使用者來說Composer非常的簡單,通過簡單的一條命令將需要的代碼包下載到vendor
目錄下,然后開發者就可以引入包並使用了.
其中的關鍵在於你項目定義的composer.json
,可以定義項目需要依賴的包(可能有多個),而依賴的包可能又依賴其他的包(這就是組件的好處),這些都不用你煩心,Composer會自動下載你需要的一切,一切在於composer.json
的定義.
1、Composer的安裝
方法一:下載並且運行 Composer-Setup.exe,它將安裝最新版本的 Composer ,並設置好系統的環境變量,因此你可以在任何目錄下直接使用 composer
命令(這是將 Composer 安裝在你機器上的最簡單的方法,推薦使用。)
一直點下一步就安裝成功了,這里的路徑是自動加上的,如果沒有就手動加上(注:運行 Composer 需要 PHP 5.3.2+ 以上版本)
完成以后,輸入"composer -V",顯示以下畫面說明安裝成功
方法二:下載composer.phar放在php目錄中直接使用(優點:單一快捷使用composer)
如果您希望手動下載phar,則可以使用以下版本:
我下載的是1.8.0版,在它所在目錄直接運行就可以
2、使用Composer下載thinkphp
第一步:首先要把倉庫鏡像修改成國內的,不然下載很慢
全局配置(推薦)
所有項目都會使用該鏡像地址:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
取消配置:
composer config -g --unset repos.packagist
項目配置
僅修改當前工程配置,僅當前工程可使用該鏡像地址:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
取消配置:
composer config --unset repos.packagist
使用composer config -g -l查看配置,結果如下,它已經改了鏡像地址
第二步:下載think
打開Packagist搜索think
運行這行代碼,它就會自動下載think,注:如果不寫上ThinkPHP版本,它會下載最新版(tp6)
下面指定下載tp5.1的最新版本(指定版本5.1.*,指定目錄名稱tp5.1)
composer create-project topthink/think tp5.1 5.1.*
3、安裝依賴包
方法一:使用composer.phar安裝
要開始在你的項目中使用 Composer,你只需要一個 composer.json
文件。該文件包含了項目的依賴和其它的一些元數據。
第一件事情(並且往往只需要做這一件事),你需要在 composer.json
文件中指定 require
key 的值。你只需要簡單的告訴 Composer 你的項目需要依賴哪些包。
{ "require": { "monolog/monolog": "^2.0" } }
你可以看到, require
需要一個 包名稱 (例如 monolog/monolog
) 映射到 包版本 (例如 ^.2.0
) 的對象。
編寫完composer.json(必須),加上composer.phar
獲取定義的依賴到你的本地項目,只需要調用 composer.phar
運行 install
命令。
php composer.phar install
接着前面的例子,這將會找到 monolog/monolog
的最新版本,並將它下載到 vendor
目錄。 這是一個慣例把第三方的代碼到一個指定的目錄 vendor
。如果是 monolog 將會創建 vendor/monolog/monolog
目錄。
如果你不想使用composer.phar,在項目加上composer.json(必須),在所在項目運行以下代碼:
composer install
方法二:Packagist搜索monolog,直接在網站根目錄運行composer require monolog/monolog(無需composer.json和composer.phar,會自動創建json文件)
包版本
在前面的例子中,我們引入的 monolog 版本指定為 ^2.0。這表示任何從 2.0
開始的開發分支,它將會匹配2.0.0或者
2.0.1
版本約束可以用幾個不同的方法來指定。
總結
1、composer.json
composer.json文件中保存的是我們安裝的組件及組件的版本要求。
2、comopser.lock
composer.lock文件中保存的是組件及其依賴的具體版本,在多人協同開發的情況下,這個文件能很好的解決組件不同而產生的問題。在使用composer install
的時候是不會修改composer.lock
這個文件,所以會把這個文件也放入版本管理中,其它人在使用時只需要composer install
就可以了。而使用composer update
后修改這個文件。
綜上所述:
composer.lock
這個文件主要是解決在協同開發中組件及其依賴的版本記錄,防止不同人使用的組件及依賴版本不同。