php使用composer

介紹

Composer 是 PHP 的一個依賴管理工具。它允許你申明項目所依賴的代碼庫,它會在你的項目中爲你安裝他們。

       我們可以在項目中聲明所依賴的外部工具庫,Composer 會幫你安裝這些依賴的庫文件,有了它,我們就可以很輕鬆的使用一個命令將其他人的優秀代碼引用到我們的項目中來。只需要項目根目錄中一個composer.json即可。

a) 你有一個項目依賴於若干個庫。

b) 其中一些庫依賴於其他庫。

c) 你聲明你所依賴的東西。

d) Composer 會找出哪個版本的包需要安裝,並安裝它們(將它們下載到你的項目中)。

安裝

linux系統:

curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin

mv /usr/local/bin/composer.phar /usr/local/bin/composer

Wondows 平臺
 我們只需要下載 Composer-Setup.exe 後,一步步安裝即可。可以直接下載到path目錄  http://getcomposer.org/composer.phar , 創建composer.bat 增加以下內容。

 @php "%~dp0composer.phar" %* 

 需要注意的是你需要開啓 openssl 配置,我們打開 php 目錄下的 php.ini,將 extension=php_openssl.dll 前面的分號去掉就可以.

切換鏡像爲國內鏡像

由於國外的composer服務器特別慢,因此配置composer爲中國鏡像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
取消配置爲中國鏡像
composer config -g --unset repos.packagist

Composer 的使用

要使用 Composer,我們需要先在項目的目錄下創建一個 composer.json 文件,文件描述了項目的依賴關係。

文件格式如下:

{
    "require": {
        "monolog/monolog": "1.2.*"
    }
}

以上文件說明我們需要下載從 1.2 開始的任何版本的 monolog。

接下來只要運行以下命令即可安裝依賴包:

composer install

composer已經爲我們下載了 monolog 包,且生成了 vendor/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('錯誤日誌');

運行腳本:

 

$ 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. https://packagist.org 查找

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

https://packagist.org/packages/mustache/mustache?query=mustache%2Fmustache

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

 

require 命令

除了使用 install 命令外,我們也可以使用 require 命令快速的安裝一個依賴而不需要手動在 composer.json 裏添加依賴信息:

$ composer require monolog/monolog

Composer 會先找到合適的版本,然後更新composer.json文件,在 require 那添加 monolog/monolog 包的相關信息,再把相關的依賴下載下來進行安裝,最後更新 composer.lock 文件並生成 php 的自動加載文件。

update 命令

update 命令用於更新項目裏所有的包,或者指定的某些包:

# 更新所有依賴
$ composer update

# 更新指定的包
$ composer update monolog/monolog

# 更新指定的多個包
$ composer update monolog/monolog symfony/dependency-injection

# 還可以通過通配符匹配包
$ composer update monolog/monolog symfony/*

需要注意的時,包能升級的版本會受到版本約束的約束,包不會升級到超出約束的版本的範圍。例如如果 composer.json 裏包的版本約束爲 ^1.10,而最新版本爲 2.0。那麼 update 命令是不能把包升級到 2.0 版本的,只能最高升級到 1.x 版本。關於版本約束請看後面的介紹。

remove 命令

remove 命令用於移除一個包及其依賴(在依賴沒有被其他包使用的情況下),如果依賴被其他包使用,則無法移除:

$ composer remove monolog/monolog
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 0 updates, 2 removals
  - Removing psr/log (1.0.2)
  - Removing monolog/monolog (1.23.0)
Generating autoload files

search 命令

search 命令可以搜索包:

$ composer search monolog

該命令會輸出包及其描述信息,如果只想輸出包名可以使用 --only-name 參數:

$ composer search --only-name monolog

show 命令

需要在項目中,已經require了這個包,纔可以用show命令。show 命令可以列出當前項目使用到包的信息:

# 列出所有已經安裝的包
$ composer show

# 可以通過通配符進行篩選
$ composer show monolog/*

# 顯示具體某個包的信息
$ composer show monolog/monolog

基本約束

精確版本

我們可以告訴 Composer 安裝的具體版本,例如:1.0.2,指定 1.0.2 版本。

範圍

通過使用比較操作符來指定包的範圍。這些操作符包括:>,>=,<,<=,!=。

你可以定義多個範圍,使用空格或者逗號 , 表示邏輯上的與,使用雙豎線 || 表示邏輯上的或。其中與的優先級會大於或。 實例:

  • >=1.0
  • >=1.0 <2.0
  • >=1.0 <1.1 || >=1.2

我們也可以通過使用連字符 - 來指定版本範圍。

連字符的左邊表明了 >= 的版本,如果右邊的版本不是完整的版本號,則會被使用通配符進行補全。例如1.0 - 2.0等同於>=1.0.0 <2.12.0相當於2.0.*),而1.0.0 - 2.1.0則等同於>=1.0.0 <=2.1.0

通配符

可以使用通配符來設置版本。1.0.*相當於>=1.0 <1.1
例子:1.0.*

波浪號 ~

我們先通過後面這個例子去解釋~操作符的用法:~1.2相當於>=1.2 <2.0.0,而~1.2.3相當於>=1.2.3 <1.3.0。對於使用Semantic Versioning作爲版本號標準的項目來說,這種版本約束方式很實用。例如~1.2定義了最小的小版本號,然後你可以升級2.0以下的任何版本而不會出問題,因爲按照Semantic Versioning的版本定義,小版本的升級不應該有兼容性的問題。簡單來說,~定義了最小的版本,並且允許版本的最後一位版本號進行升級(沒懂得話,請再看一邊前面的例子)。
例子:~1.2

需要注意的是,如果~作用在主版本號上,例如~1,按照上面的說法,Composer可以安裝版本1以後的主版本,但是事實上是~1會被當作~1.0對待,只能增加小版本,不能增加主版本。

折音號 ^

^操作符的行爲跟Semantic Versioning有比較大的關聯,它允許升級版本到安全的版本。例如,^1.2.3相當於>=1.2.3 <2.0.0,因爲在2.0版本前的版本應該都沒有兼容性的問題。而對於1.0之前的版本,這種約束方式也考慮到了安全問題,例如^0.3會被當作>=0.3.0 <0.4.0對待。
例子:^1.2.3


版本穩定性

如果你沒有顯式的指定版本的穩定性,Composer會根據使用的操作符,默認在內部指定爲-dev或者-stable。例如:

約束 內部約束
1.2.3 =1.2.3.0-stable
>1.2 >1.2.0.0-stable
>=1.2 >=1.2.0.0-dev
>=1.2-stable >=1.2.0.0-stable
<1.3 <1.3.0.0-dev
<=1.3 <=1.3.0.0-stable
1 - 2 >=1.0.0.0-dev <3.0.0.0-dev
~1.3 >=1.3.0.0-dev <2.0.0.0-dev
1.4.* >=1.4.0.0-dev <1.5.0.0-dev

例子:1.0 - 2.0

 

如果你想指定版本只要穩定版本,你可以在版本後面添加後綴-stable

 

minimum-stability 配置項定義了包在選擇版本時對穩定性的選擇的默認行爲。默認是stable。它的值如下(按照穩定性排序):devalphabetaRCstable。除了修改這個配置去修改這個默認行爲,我們還可以通過穩定性標識(例如@stable@dev)來安裝一個相比於默認配置不同穩定性的版本。例如:

{
    "require": {
        "monolog/monolog": "1.0.*@beta",
        "acme/foo": "@dev"
    }
}

其他

使用composer 加載自己的類文件 , 

加載自己的文件,在composer中增加,例如加載include/config.php文件,加載class下面所有的類
{
    "autoload": {
        "files": ["include/config.php","include/cstring.php"],
    "classmap": ["class/"]
    }
}

完成後在composer同級目錄執行 composer dump-autoload
 

或者通過psr-4 加載自己本地代碼,

通過psr-4 自動加載自定義目錄代碼,其中App\\爲類開始的名稱空間,app/爲源碼目錄放在vendor同級目錄。
{
...
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
}

寫好psr4的數組之後,執行composer dump-autoload ;生成一下autoload文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章