掌握Composer

這一次,真正掌握composer

composer是現代PHP的基石

現代高級編程語言,依賴管理工具是必不可少的。Java有Maven,Python有pip,Nodejs有npm, 而在composer出現以前,PHP只有被廣爲詬病的Pear, 因爲Pear實在太難用,不多PHP開發者用到這個工具。以至於PHP的開發生態很糟糕。php

連一個像樣的依賴管理工具都沒有,讓PHP這門佔據了web網站開發�主流市場的語言很尷尬。開發過程當中,要用到第三方的類庫,須要去下載zip包,而後解壓,放到相應的目錄,處理好命名空間,自動加載的問題,若是這個第三方包還有其餘依賴項,還要再次重複這個流程,看着隔壁家python和node.js一個命令行就搞定,顯得php開發人員的操做既原始又滑稽。node

這場面,比如:python

依賴管理工具大比拼web

所幸,金光閃閃的composer駕着七彩祥雲來了,PHP終於有了真正意義的依賴管理工具。能夠說,composer是現代PHP的基石。數據庫

composer解決了項目的依賴關係,且實現了自動加載。開發人員只須要幾個命令行,就能獲取其餘開發者的包,PHP開發工做所以變得如同堆積木,能夠根據業務的需求,快速方便地拆解組合代碼。npm

奇怪的是,即便compoer已經誕生好些年了,並且全部主流框架都支持composer,可居然還有很多PHP開發者不用這個工具。甚至還有人以爲composer加大了PHP的學習難度。編程

持有這種想法的人,就好像是一生都用紙筆手工記帳,有朝一日,給他配置了電腦,跟他演示了excel是如何地強大。他不爲新事物的強大感到震撼驚喜,而是蹙眉不滿地說:「這東西太難學了,我仍是習慣用紙筆」。json

對於持有這種想法的人,我只能兩手一攤。心態衰老的年輕人,若是他的心裏一直在裝睡,任誰也叫不醒。但時代的步伐可不會由於他們的拉後腿而中止前進,只會把他們遠遠甩在身後...composer

初識composer

composer的安裝步驟,在composr中文社區有詳細的說明,點擊查看框架

安裝流程

安裝的流程很簡單,歸結爲如下幾步:

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" # 下載安裝腳本 - composer-setup.php - 到當前目錄
php composer-setup.php # 執行安裝過程
php -r "unlink('composer-setup.php');" # 刪除安裝腳本
sudo mv composer.phar /usr/local/bin/composer # 全局安裝
composer config -g repo.packagist composer https://packagist.phpcomposer.com # 更換國內鏡像源

安裝完成後,查看composer版本

composer

第一次使用

接下來,咱們用composer來安裝第一個包

monolog包爲例,這個包可讓開發者很方便地將日記寫入到文件、數據庫或其餘儲存介質中。

  1. 在項目根目錄新建composer.json文件,寫入如下內容
{
    "require": {
        "monolog/monolog": "1.2.*"
    }
}
  1. 執行composer install指令安裝包依賴

composer install

  1. 使用包進行開發

目錄結構

composer已經爲咱們下載了monolog包,且生成了autoload.php自動加載文件

新建monolog.php文件,內容以下:

<?php
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('monolog.log', Logger::WARNING));

// add records to the log
$log->warn('警告日誌');
$log->err('錯誤日誌');

運行腳本:

learnComposer  php monolog.php

生成了日誌文件monolog.log

[2018-07-12 14:18:14] name.WARNING: 警告日誌 [] []
[2018-07-12 14:18:14] name.ERROR: 錯誤日誌 [] []

只需一個配置文件composer.json,一行指令composer install,代碼中引入autoload.php,便可完美地使用第三方包。接下來分析composer的包管理規範

composer包管理規範

什麼是包?只要存在composer.json文件的代碼均可以稱之爲一個包。

包名稱

包名稱由做者+項目名稱組成。有些包做者名與項目名是相同的,如mustache/mustache

包名稱必定要加上做者,避免衝突。如,一樣的是小龍女這個角色,不一樣人演繹的效果徹底不一樣。若是你只是說你要看小龍女,可能給你的是一個陳妍希版本的小籠包,而不是你一直仰慕的仙女劉亦菲。

那麼,咱們怎麼根據一個包的項目名去獲取包的信息呢?以mustache包爲例:

  1. packagist查找

搜索包

點擊進入包信息詳情頁,能夠看到包的安裝方法以及版本信息

安裝包

除了在composer.json中寫包的安裝信息,還能夠經過composer require mustache/mustache這種方式直接安裝

包信息

  1. composer search指令查找

composer search

查看包的具體信息 composer show mustache/mustache --all

composer show

相關文章
相關標籤/搜索