目录
一、Composer
1、composer概念
(1)composer是什么
Composer是PHP程序的依赖管理工具,它帮助程序员管理和安装程序中使用到的PHP依赖库,同时提供了自动加载机制,方便依赖库的使用。
自php5.3以后,引入Composer依赖管理工具
Composer可以说是PHP程序的未来,是现代PHP开发必不可少的。
(2)Composer主要作用:
依赖管理:程序中使用的PHP库,交由Composer管理
自动加载:依赖库中的类和用户自定义的类,由Composer支持自动加载。
2、使用Compser的前提条件
php5.3+、开启open_ssl扩展
3、安装包下载:
见:https://getcomposer.org/download/
下载Windows安装包:https://getcomposer.org/Composer-Setup.exe
下载Linux安装包:php命令下载(见下述4)
4、环境检查
(1)查看openssl是否安装
如果没有安装需要重新编译源码进行安装。
php -m|grep openssl
(2)查看php版本
php -vesrion
5、安装方法
(1)Download the installer to the current directory
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
(2)Verify the installer SHA-384, which you can also cross-check here
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
(3)Run the installer
php composer-setup.php 如果出现如下错误,重新编译安装PHP,enable-phar即可 Install it or recompile php without --disable-phar
(4)Remove the installer
php -r "unlink('composer-setup.php');"
(5)配置Composer命令到环境变量中
mv composer.phar /usr/local/bin/composer
选择合适的php.exe路径,由于网络环境问题,可能一次安装不成功,多尝试几次即可完成安装
(6)配置中国镜像:
--增加国内镜像(只有最后的镜像是生效的)
composer config -g repo.packagist composer https://packagist.phpcomposer.com composer config -g repo.packagist composer https://developer.aliyun.com/composer
--查看添加的镜像
composer config -g --list --verbose
--移除添加的镜像
composer config -g --unset repos.packagist
(7)去掉提示:Do not run Composer as root/super user! See https://getcomposer.org/root for details Continue as root/super user [yes]?
COMPOSER_ALLOW_SUPERUSER 环境变量用于控制 Composer 是否允许某些操作以超级用户(root)权限执行。
如果你需要修改这个变量,通常是为了解决权限问题。
在命令行中设置这个变量,你可以使用 export 命令(在 Bash 或类似的 shell 中):export COMPOSER_ALLOW_SUPERUSER=1
或者可以直接写入到~/.bash_profile中
(8)composer诊断
composer diagnose
二、Composer的使用
1、使用composer下载安装扩展库
(1)composer require 命令
在应用程序目录下,安装指定的扩展库命令。
e.g:安装appbolaget库
composer require appbolaget/dd;
(2)composer.json中配置进行安装依赖包
--先配置
"require": {
"php": "^7.3|^8.0",
"betterde/logger": "^2.2",
"doctrine/dbal": "^3.3",
"dompdf/dompdf": "^2.0"
}
--再进行update
此命令会根据composer.json中的配置,更新应用程序
composer update
2、composer.json文件
存放composer的配置文件
3、案例使用—程序使用第三方库
<?php //引入Composer自动加载机制 require_once 'vendor/autoload.php'; // 引入命名空间 use carbon\carbon; // 使用依赖库 echo carbon::now()->toDateTimestring();
4、删除一个应用扩展库
--先再composer.json中删除一个require --再执行更新 composer update
5、composer install 命令
与composer install差不多,不常用,经常使用composer update命令
6、composer在PHP中的使用
(1)创建一个demo.php
(2)在php文件中引入composer的自动加载文件
<?php //composer的自动加载文件 require_once 'vendor/autoload.php'; //使用扩展库carbon dump(Carbon\Carbon::now());
7、composer create-project 命令
后续讲解
注意composer默认使用 https 链接,使用中国镜像时可能在下载依赖库时会有问题,此时可以修改composer配置项secure-http,允许通过 http 链接访问 composer config -g secure-http false。
三、关于Composer的自动加载机制
1、Composer提供了三种形式的自动加载机制:
(1)基于 PSR-4 规范的自动加载机制 (2)基于类目录的自动加载机制 (3)基于函数库文件的自动加载机制
2、Composer自动加载机制使用流程:
在 composer.json 文件中定义自动加载规则
使用命令 composer dump-autoload 生成自动加载文件
程序中引入自动加载规则,使用自定义类
3、PHP的简单用法
(1)php -m
(2)php -v
(3)php -s 开启内置服务器
(4)php test.php 运行php程序
(5)php composer.phar 运行composer安装命令
四、手动安装Composer
1、若自动安装Composer不成功,可以采用手动安装形式
下载 composer.phar 文件到指定目录(一般位于当前应用目录)
下载地址:https://getcomposer.org/download/1.5.2/composer.phar
2、使用 php composer.phar 代表 composer 执行Composer命令
3、也可以建立快捷方式 composer.bat 文件
--把composer.phar所在目录写入到环境变量中(一般把composer.phar放在php.exe所在目录) --在同级目录下新建 composer.bat 文件,输入文本 @php "%~dp0composer.phar" %* --现在即可使用 composer 代替 php composer.phar
五、composer诊断过程
https://blog.csdn.net/qq_35138724/article/details/122898464
六、composer.lock文件是干什么的?底层原理是什么?
1、composer.lock是什么
composer.lock文件是Composer工具使用的锁文件,用于记录已安装包的确切版本号和依赖关系。它是在执行composer install或composer update命令时自动生成或更新的。composer.lock文件位于项目的根目录下,通常与composer.json文件一起存储在版本控制系统中。
2、composer.lock文件的作用包括:
锁定已安装包的版本:composer.lock文件记录了每个已安装包的确切版本号,包括其依赖关系。这样可以确保在不更改composer.json文件的情况下重现相同的依赖项版本。它提供了一种固定依赖项版本的机制,以确保项目在不同环境中的一致性。
提供快速安装:当执行composer install命令时,Composer首先检查是否存在composer.lock文件。如果存在,Composer会直接使用其中记录的确切版本号来安装依赖项,而不是解析composer.json文件并下载最新版本。这样可以加快安装过程,避免下载相同版本的包。
避免意外升级:composer.lock文件的存在可以防止意外升级依赖项。如果没有composer.lock文件,Composer在执行composer update命令时将根据composer.json文件中的约束条件尝试获取最新版本的依赖项。但如果存在composer.lock文件,Composer会优先使用其中记录的版本信息。
3、composer.json的底层原理
(1)底层原理:
当执行composer install或composer update命令时,Composer会生成或更新composer.lock文件。底层原理涉及以下几个步骤:
(2)解析依赖关系:
Composer解析composer.json文件中的依赖关系,包括主要依赖项和开发依赖项。它检查每个依赖项的名称和版本约束。
(3)解析版本解析器:
Composer使用一种称为版本解析器的算法来确定满足约束条件的最新版本。版本解析器会考虑依赖关系中的版本约束、包的可用版本以及其他限制条件,以确定最佳匹配的版本。
(4)下载依赖项并记录版本号:
根据版本解析器的结果,Composer从包存储库(如Packagist)下载满足约束条件的依赖项的包,并记录每个已安装包的确切版本号和依赖关系。这些信息被写入composer.lock文件中。
(5)检查composer.lock文件:
在执行composer install或composer update命令时,Composer首先检查是否存在composer.lock文件。如果存在,Composer将使用其中记录的确切版本号和依赖关系来安装或更新依赖项,而不是解析composer.json文件并下载最新版本。
通过composer.lock文件,Composer确保了项目依赖项版本的一致性,以及更快的安装过程和可控的依赖项升级。这对于团队协作、持续集成和部署过程中的一致性是非常重要的。