成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁 ? 技術(shù)教程 ? composer.lock文件的作用
全站頭部文字 我要出現(xiàn)在這里
composer.lock文件的作用 689 2023-12-09   

Composer的基本使用

在項目中使用composer.json

在項目中使用composer,你需要有一個composer.json文件,此文件的作用主要用來聲明包之間的相互關(guān)系和其他的一些元素標(biāo)簽。


require 關(guān)鍵字

第一件事情在composer.json就是使用require關(guān)鍵字了,你將告訴composer哪些包是你項目所需要的

{

    "require": {

        "monolog/monolog": "1.0.*"

    }

}

如你所見,require的對象將會映射包的名稱( monolog/monolog)和包的版本是1.0.*


包的命名

基本上包的命名是 主名/項目名稱( monolog/monolog),主名必須唯一,但是項目也就是我們的包的名稱可以有相同的,例如: igorw/json,和seldaek/json

包的版本

我們需要使用monolog的版本是1.0.*,他的意思是只要版本是1.0分支即可,例如1.0.0,1.0.2或者1.0.99

版本定義的兩種方式:

1. 標(biāo)準(zhǔn)的版本:定義保準(zhǔn)的版本包文件,如:1.0.2
2. 一定范圍的版本:使用比較符號來定義有效的版本的范圍,有效的符號有>, >=, <,<=, !=
3. 通配符:特別的匹配符號*,例如1.0.*就相當(dāng)于>=1.0,<1.1版本的即可
4. 下一個重要的版本:~符號最好的解釋就是,~1.2就相當(dāng)于>1.2,<2.0,但~1.2.3就相當(dāng)于>=1.2.3,<1.3版本。

安裝包

在項目文件路徑下運行

$ composer install

這樣子他會自動下載monolog/monolog文件到你的vendor目錄下面。

接下來需要說明一件事情就是

composer.lock - 鎖定文件

在安裝完所有需要的包之后,composer會生成一張標(biāo)準(zhǔn)的包版本的文件在composer.lock文件中。這將鎖定所有包的版本。

使用composer.lock(當(dāng)然是和composer.json一起)來控制你的項目的版本

這一點非常的重要,我們使用install命令來處理的時候,它首先會判斷composer.lock文件是否存在,如果存在,將會下載相對應(yīng)的版本(不會在于composer.json里面的配置),這意味著任何下載項目的人都將會得到一樣的版本。

如果不存在composer.lock,composer將會通過composer.json來讀取需要的包和相對的版本,然后創(chuàng)建composer.lock文件

這樣子就可以在你的包有新的版本之后,你不會自動更新了,升級到新的版本,使用update命令即可,這樣子就能獲取最新版本的包并且也更新了你的composer.lock文件。

$ php composer.phar update
或者
$ composer update

Packagist(這應(yīng)該就是composer,感覺有點像python的包,雖然沒那么強大,呵呵,有了這種標(biāo)準(zhǔn)以后,以后大家開發(fā)網(wǎng)站絕對會很輕松,可以借鑒很多人的代碼了,并且更加方便了!)
Packagist是composer的主要倉庫,大家可以去看看,composer倉庫的基礎(chǔ)是包的源碼,你可以隨意的獲取,Packagist的目的建成一個任何人都可以使用的倉庫,這就意味著在你的文件中任意的require包了。

關(guān)于自動加載

為了方便的加載包文件,Composer自動生成了一個文件 vendor/autoload.php,你可以方便只有的使用它在任何你需要使用的地方
require 'vendor/autoload.php';

這意味著你可以非常非常方便的使用第三方代碼了,假設(shè)你的項目需要使用monlog,你直接使用吧,他們都已經(jīng)自動加載了的!

$log = new MonologLogger('name');

$log->pushHandler(new MonologHandlerStreamHandler('app.log', MonologLogger::WARNING));

$log->addWarning('Foo');

當(dāng)然你也可以在composer.json中加載自己的代碼:

{

    "autoload": {

        "psr-0": {"Acme": "src/"}

    }

}

composer將會把psr-0注冊為Acme的命名空間

你可以定義一個映射通過命名空間到文件目錄,src目錄是你的根目錄,vendor是同一級別的目錄,例如一個文件為:src/Acme/Foo.php就包含了AcmeFoo類

當(dāng)你在增加autoload之后,你必須要重新install來生成vendor/autoload.php文件

在我們引用此文件的時候,將會返回一個autoloader類的實力,所以你可以把返回的值放入一個變量,然后在增加更多的命名空間,如果在開發(fā)環(huán)境下這是非常方便的,例如:

$loader = require 'vendor/autoload.php';

$loader->add('AcmeTest', __DIR__);

composer.lock文件的作用

install 命令從當(dāng)前目錄讀取 composer.json 文件,處理了依賴關(guān)系,并把其安裝到 vendor 目錄下。

composer install

如果當(dāng)前目錄下存在 composer.lock 文件,它會從此文件讀取依賴版本,而不是根據(jù) composer.json 文件去獲取依賴。這確保了該庫的每個使用者都能得到相同的依賴版本。

如果沒有 composer.lock 文件,composer 將在處理完依賴關(guān)系后創(chuàng)建它。

為了獲取依賴的最新版本,并且升級 composer.lock 文件,你應(yīng)該使用 update 命令。

composer update

這將解決項目的所有依賴,并將確切的版本號寫入 composer.lock。

如果你只是想更新幾個包,你可以像這樣分別列出它們:

composer update vendor/package vendor/package2

你還可以使用通配符進行批量更新:

composer update vendor/*


主站蜘蛛池模板: 瑜伽焰口拼音版全文| 杨玉环秘史| 狂魔电影| 米莎巴顿| 宋佳风平浪静| 暗夜与黎明电视连续剧| 变形金刚6免费完整版在线观看| 淡蓝色的雨简谱| 韩宝仪个人简历| 彩云曲 电影| 泰剧《一触即爱》| 在人间在线观看完整版| 暴雪将至电影| 国测四年级语文试题| 在线黄色片| 半夜电影| dj舞曲超劲爆dj| 抖音游戏中心| 永远的乳房 电影| 光明力量2古代封印攻略| 少妇bbbbbbb| 施文彬| 曹东| 全家福演员表| 2024头像| 百家讲坛《两宋风云》| soldier's heart| 欧美17p| 印度超人3| 飞虎神鹰1-42集免费| 花样美男| 我心灿烂| 尸家重地演员表| 电影《大突围》免费观看国语 | 《牵牛花》阅读答案| 韩义生| 让娜迪尔曼| 基础设施建设产业市场| 叶子楣作品| 肢体的诱惑| 遇见恶魔|

!!!站長長期在線接!!!

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103