Composer 介绍
Composer 是 PHP 的一个依赖管理工具, 在项目中声明所依赖的外部工具库, 会自动安装这些工具库及所依赖的库文件.
对我等初阶工程狮来说, 就是拉别人的代码, 用别人的库, 一个进阶版的 cp 命令 <(~︶~)>
安装流程
curl -sS https://getcomposer.org/installer | PHP
然后当前文件夹下应该会有一个 Composer.phar 文件, 然后把它放到全局路径里或者在 PATH 里加入它的位置
mv Composer.phar /usr/local/bin/Composer
Windows 用户添加到环境变量里的 PATH 中
不会的这里有百度经验
运行命令看看安装成功没有
- Composer --versio
- // 输出: Composer version 1.5.6 2017-12-18 12:09:18
- // 输出这种样子的就是成功了
也可以看个图, 直接运行 Composer 命令:
Composer
介绍下 Composer.JSON 文件
- {
- "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/
引入一个新的包
搞个例子, 我们还缺少一个正式的日志功能, PHP 有个很牛 x 的开源日志库, 我们这就使用 Composer 把他加载进来.(开源就是光明正大让你 copy 过来的写好了的代码, 然而 cp 太麻烦, 于是大佬们就发明了 Composer 一次行复制过来).
这是 GitHub 地址
https://github.com/Seldaek/monolog
这是是我们之前 Composer.JSON 文件中 requeire 部分
- "require": {
- "php": ">5.3.0",
- "catfan/Medoo": "*"
- },
现在加上 monolog 的部分
- "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.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 的时候会首先检查 lock 文件是否存在, 如果存在, 就按照 Composer.lock 文件指定的版本, 取拉取对应的版本, 如果不存在, 就拉取默认的版本, 并且创建 Composer.lock 文件
如果在 Composer.JSON 文件中修改了版本号, 一定要执行 Composer update, 这样, Composer.lock 文件就会被更新.
团队开发的时候, 一定要把 Composer.lock 文件上传到仓库里, 这样才能保证团队里的每一个成员的版本都是一致的.
Composer 常用命令汇总
- 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
来源: https://www.cnblogs.com/alexfly/p/10532057.html