簡(jiǎn)介
Composer 是 PHP5 以上的依賴管理工具,用來對(duì)需要用到的功能模塊進(jìn)行統(tǒng)一管理,包括引用模塊的版本、模塊的安裝和刪除等等壁酬。它類似于 Java 語言中的 Maven和 Gradle,Node 語言的 NPM恨课,Ruby 的 Gem 等舆乔。
安裝
在終端中執(zhí)行下面的命令即可獲取到最新版本的 Composer
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '55d6ead61b29c7bdee5cccfb50076874187bd9f21f65d8991d46ec5cc90518f447387fb9f76ebae1fbbacf329e583e30') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
或者使用 Homebrew 進(jìn)行安裝
brew install composer
引用
-
方式一
在項(xiàng)目目錄中創(chuàng)建一個(gè) composer.json 的文件,在文件中添加下面的代碼剂公。
{ "require": { "monolog/monolog": "1.0.*" } }
保存文件后希俩,在終端中項(xiàng)目目錄下執(zhí)行命令
composer install
執(zhí)行后就會(huì)安裝 monolog 模塊,并在項(xiàng)目目錄中自動(dòng)生成一個(gè) vendor 目錄纲辽,該目錄下就包含著引用的 monolog 模塊的信息颜武。
-
方式二
可以直接在終端中執(zhí)行命令composer require monolog/monolog
這樣就得到了和方式一一樣的結(jié)果贫母。
開發(fā)時(shí)引用
在 composer.json 文件中添加 require-dev 的配置,表示的是這當(dāng)中引用的模塊是開發(fā)模式下使用的盒刚。
"require-dev": {
"monolog/monolog": "1.0.*"
}
再次在終端執(zhí)行 composer update
命令時(shí)就會(huì)在 vendor 目錄下出現(xiàn) monolog 模塊了。
如果有些模塊不需要在生產(chǎn)環(huán)境下加載的話绿贞,可以將這些模塊配置到 require-dev 中因块,然后在執(zhí)行 composer update/install 時(shí)添加 --no-dev選項(xiàng),命令如下籍铁。
composer install --no-dev
composer update --no-dev
版本號(hào)的設(shè)置
名稱 | 實(shí)例 | 描述 |
---|---|---|
確切的版本號(hào) | 1.0.2 | 指定確切的版本 |
范圍 | >=1.0 | 通過使用比較操作符可以指定有效的版本范圍涡上。 有效的運(yùn)算符:>、>=拒名、<吩愧、<=、!= |
通配符 | 1.0.* | 使用通配符來指定一種模式增显。 1.0.與>=1.0,<1.1是等效的 |
波浪號(hào)運(yùn)算符 | ~1.2.1 | ~1.2相當(dāng)于>=1.2.1,<1.3.0 |
異或運(yùn)算符 | ^1.2 | ^1.2相當(dāng)于>=1.2,<2.0 |
自動(dòng)加載
在自己的 php 文件中加入下面的代碼雁佳。
require 'vendor/autoload.php';
這樣 Composer 就會(huì)通過 vendor 目錄下的 autoload.php文件對(duì) vendor 目錄中的模塊進(jìn)行自動(dòng)加載。
創(chuàng)建項(xiàng)目
composer create-project vendor/project:version [target-directory]
composer create-project vendor/project [target-directory] [version]
例如在當(dāng)前目錄中創(chuàng)建 Laravel 項(xiàng)目同云,可以使用下面的命令
composer create-project laravel/laravel
運(yùn)行 shell 命令
可以使用 composer 執(zhí)行一些腳本命令糖权,只需要將這些命令配置在 composer.json 文件的 script 下就可以了。
"scripts": {
"事件名稱": "事件腳本",
"事件名稱": [
"事件腳本1",
"事件腳本2"
]
}
事件名稱 | 詳細(xì)說明 |
---|---|
pre-install-cmd | 在 install 命令執(zhí)行前觸發(fā)炸站。 |
post-install-cmd | 在 install 命令執(zhí)行后觸發(fā)星澳。 |
pre-update-cmd | 在 update 命令執(zhí)行前觸發(fā)。 |
post-update-cmd | 在 update 命令執(zhí)行后觸發(fā)旱易。 |
pre-status-cmd | 在 status 命令執(zhí)行前觸發(fā)禁偎。 |
post-status-cmd | 在 status 命令執(zhí)行后觸發(fā)。 |
pre-package-install | 在資源包安裝前觸發(fā)阀坏。 |
post-package-install | 在資源包安裝后觸發(fā)如暖。 |
pre-package-update | 在資源包更新前觸發(fā)。 |
post-package-update | 在資源包更新后觸發(fā)全释。 |
pre-package-uninstall | 在資源包被卸載前觸發(fā)装处。 |
post-package-uninstall | 在資源包被卸載后觸發(fā)。 |
pre-autoload-dump | 在自動(dòng)加載器被轉(zhuǎn)儲(chǔ)前觸發(fā)浸船,無論是 install/update 還是 dump-autoload 命令都會(huì)觸發(fā)妄迁。 |
post-autoload-dump | 在自動(dòng)加載器被轉(zhuǎn)儲(chǔ)后觸發(fā),無論是 install/update 還是 dump-autoload 命令都會(huì)觸發(fā)李命。 |
post-root-package-install | 在 create-project 命令期間登淘,根包安裝完成后觸發(fā)。 |
post-create-project-cmd | 在 create-project 命令執(zhí)行后觸發(fā)封字。 |