Composer
文章目录
pear
- pear: 全称为PHP扩展与应用库(PHP Extension and Application Repository)。为了创建一个类似于Perl CPAN档案的工具
- phar: php档案包
Composer
- 概念:用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。Composer 是多平台的,我们努力使它在 Windows 、 Linux 以及 OSX 平台上运行的同样出色。
- composer扩展包平台: https://packagist.org/
- ~和^的意思很接近,在x.y的情况下是一样的都是代表x.y <= 版本号 < (x+1).0,但是在版本号是x.y.z的情况下有区别,举个例子吧:
~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0
^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0
基本命令
-
composer show encore/laravel-admin // 查看当前版本
-
composer self-update // composer 升级
-
composer config -gl -> composer查看全局设置
-
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer -> 更换 composer 源
-
composer install -> 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖;
-
composer install –ignore-platform-reqs -> 忽略警告等信息
-
composer require “new/package:version” -> 添加安装 new/package, 可以指定版本,如: composer require new/package ~2.5. 流程
-
php -d memory_limit=-1 /usr/local/bin/composer require -> 解决内存耗尽问题,保证安装成功
composer require “summerblue/generator:~1.0” –dev -> 后置参数 –dev 表明我们只在开发环境中使用
1 2 3 4 5 6 7
// 安装包 composer require hashids/hashids:2.0.0 // 已安装 升级 composer require hashids/hashids:3.0.0 // 已安装 降级 composer remove hashids/hashids composer require hashids/hashids:2.0.4
-
接下来介绍几个日常生产的流程,来方便加深我们的理解
1 2 3 4 5 6 7 8 9 10 11 12 13 14
> 流程一:新项目流程 > - 创建 composer.json,并添加依赖到的扩展包; > - 运行 composer install,安装扩展包并生成composer.lock; > - 执行额外命令:php artisan ide-helper:generate 等 > - 提交 composer.lock 到代码版本控制器中,如:git; > > 流程二:新人接手安装现有项目的扩展 > - 克隆项目后,根目录下直接运行 composer install 从composer.lock 中安装 指定版本 的扩展包以及其依赖; > - 执行额外命令:php artisan ide-helper:generate 等 > - 此流程同样适用于生产环境代码的部署。 > > 流程三:为项目添加新扩展包 > - 使用 composer require "new/package:version" 添加扩展包; > - 提交更新后的 composer.json 和 composer.lock 到代码版本控制器中,如:git;
-
composer remove some/package -> 删除已安装的扩展
-
composer update –no-plugins -> 扩展升级更新
-
composer dump-autoload # 重新加载 composer.json 的自动加载模块,更新 autoload_static.php 等文件
-
实现全局辅助函数:打开根目录下的composer.json,找到加载配置项autoload,新增以下代码:
1 2 3
"files":[ "app/helpers.php" ]
require-dev 和 require
require-dev和require、autoload-dev和autoload使用方式一致,用途不同。
- require列出的软件包列表必须安装,都为正式部署所需要;
- require-dev列出的软件包一般用于开发或测试,是额外列出的依赖;
- 执行composer install/update命令时用–no-dev参数跳过require-dev列出的软件包;
autoload-dev 和 autoload
- autoload自动加载映射,正式部署使用;
- autoload-dev自动加载映射,一般多用于测试和开发;
- 执行composer dump-autoload命令式可通过–no-dev参数来忽略autoload-dev指定的命名空间;
常用 composer 扩展包
- 常见的 Token 是存储在数据库中的,在服务器端进行数据库查询,并比对 Token 是否合法。JWT 的意义是让 Token 和 Payload 加密后存储于用户端,服务端只需要解密即可,不需要查库即可获得类似存储于 Session 的数据(Payload),并且可信赖。
通常引入的 package 有这么些特征
不要随意引入过多的 package,简单的功能自己写即可。
- 通用类库,比如 jwt 、predis
- 非常复杂的功能,比如 oauth(即 Laravel 的 passport)
- 各种 sdk,比如 easywechat
- 辅助开发的包,如 laravel-ide-helper、tinker