composer是php的一個依賴管理工具,在項目中聲明所依賴的外部工具庫,會自動安裝這些工具庫及所依賴的庫文件。
對我等初階工程獅來講,就是拉別人的代碼,用別人的庫,一個進階版的cp命令 <( ̄︶ ̄)>php
curl -sS https://getcomposer.org/installer | php
而後當前文件夾下應該會有一個composer.phar文件,而後把它放到全局路徑裏或者在PATH里加入它的位置html
mv composer.phar /usr/local/bin/composer
windows用戶添加到環境變量裏的PATH中
不會的這裏有百度經驗 https://jingyan.baidu.com/article/8ebacdf02d3c2949f65cd5d0.htmlgit
運行命令看看安裝成功沒有github
composer --versio //輸出: Composer version 1.5.6 2017-12-18 12:09:18 //輸出這種樣子的就是成功了
也能夠看個圖,直接運行 composer命令:thinkphp
composer
{ "name": "HiPHP", "description": "hi world", "type": "Framework", "keywords": [ "PHP", "PHP FRAMEWORK" ], "require": { "php": ">5.3.0", "catfan/Medoo": "*", "monolog/monolog": "1.2.*" }, "repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } } }
國內的鏡像服務,因爲衆所周知的緣由,使用國外的會很慢很卡,具體方法查看composer國內鏡像的官網介紹。 https://pkg.phpcomposer.com/json
搞個例子,咱們還缺乏一個正式的日誌功能,php有個很牛x的開源日誌庫,咱們這就使用composer把他加載進來。(開源就是光明正大讓你copy過來的寫好了的代碼,然而cp太麻煩,因而大佬們就發明了composer一次行復制過來)。windows
這是github地址
https://github.com/Seldaek/monologcomposer
這是是咱們以前 composer.json 文件中requeire部分curl
"require": { "php": ">5.3.0", "catfan/Medoo": "*" },
如今加上monolog的部分thinkphp5
"require": { "php": ">5.3.0", "catfan/Medoo": "*", "monolog/monolog": "1.2.*" },
而後咱們執行 composer update
打印出來的數據沒問題,咱們去看看vender裏的文件,多了這麼一個monolog的文件夾。
如今咱們在代碼裏測試一下,這是修改以後的testCtrl控制器
namespace controller; use Monolog\Logger; use Monolog\Handler\StreamHandler; class testCtrl { public function index() { $log = new Logger('name'); $log->pushHandler(new StreamHandler('my.log', Logger::WARNING)); $log->warn('warn警告'); $log->err('err錯誤'); } }
運行以後根目錄下多出來一個文件,my.log,打開裏邊有這樣的內容。
還能夠直接跑命令composer require
。
好比咱們仍是添加這個monolog庫,把咱們剛纔修改的composer.json文件裏的引入monolog的這一行刪除掉,而後運行 composer update
,會發現剛纔自動下載的monolog文件夾消失了,回到了最初的狀態。
而後咱們運行
composer require monolog/monolog
看輸出:
看看composer.json文件,發現已經多出了一行
"monolog/monolog": "^1.24"
版本詳細到了1.24,比咱們最開始指定的要詳細一些,文件夾也出來了,代碼也能夠正常調用。
看一下咱們的composer.lock,這是個運行了composer install或者update以後就存在的文件。
composer.json是用來配置咱們要引入的庫,那這個composer.lock是用來幹嗎的呢?答案是,用來精確指定版本。
好比咱們一開始手動添加版本的時候,添加的是1.2.*,這樣咱們在拉取的時候,可能會拉去1.2.1或者1.2.4,但加入他官方的版本升級了,以後使用這個項目的人,install的時候拉去的可能就是1.2.5了,說不定有一些不兼容的問題。因而compsoer便設計了一個lock文件,lock文件裏會有完整的包信息和版本號。
關於compser.lock的具體情景:
composer install
composer update
composer require 庫名 [版本]
引入新庫或者修改原來庫版本composer selfupdate
composer自身更新composer self-update --rollback
更新以後回退到上次的版本composer create-project
從現有的包裏建立一個新的項目 如:composer create-project topthink/think=5.0.* tp5 --prefer-dist
就能夠直接下載一個thinkphp5.0的代碼composer search 包名
好比 composer search monolog
就能夠搜索composer的官方網站 https://packagist.org/ 上的有的包composer config
composer配置命令,好比全局設置composer的國內鏡像 composer config -g repo.packagist composer https://packagist.phpcomposer.com