composer

2019-12-27  本文已影响0人  sorry510

什么是composer

composer是 PHP 用来管理依赖(dependency)关系的工具,传统的引入扩展包方式,必须手动使用require或者include来引入相关文件,这种方式及其不友好。而composer实现了一种自动加载机制,当你在文件中new 某个类时,composer会帮你自动尝试include相关的文件,但是php由于没有包的概念,没有import等关键词,没有语言层面的加载机制,所以composer的自动加载需要人为的制定一些相关的规范,只有符合psr-0(已废弃)psr-4的代码编程规范的扩展包才能实现composer的自动加载机制

如何安装

  1. 第一种方法安装包
  2. 第二种方法手动安装
    找到下载网址https://getcomposer.org/download/或者https://mirrors.aliyun.com/composer/composer.phar
    将下载的composer.phar放到php安装目录下
    在php的目录下执行命令
echo @php "%~dp0composer.phar" %*>composer.bat

中国镜像

由于官方的镜像在github下载速度过于缓慢,所有强烈建议改为阿里镜像,使用如下命令

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

或者在项目的composer.json中单独配置

composer config repo.packagist composer https://mirrors.aliyun.com/composer/

如何使用

  1. 如果使用了thinkphp,laravel框架等,框架内部已经引入了自动加载,会在入口文件的地方使用类似代码require __DIR__.'/../vendor/autoload.php';,composer的自动加载会在vendor目录下生成一个autoload.php文件,只要引入了这个文件,就能实现自动加载,以tp框架为例,在composer.json中有如下代码
 "autoload": {
        "psr-4": {
            "app\\": "application"
        },
        "files": [
            "app/Helpers/functions.php"
        ],
 },

这个代码意思是将tp框架的跟目录下(与vendor平级的目录)的application目录映射为app的命名空间,凡是在application目录下的文件,只要psr-4的规范的都可以实现自动加载,下面那个files指的是app/Helpers/functions.php这个文件也会被自动加载

  1. 在一个空白项目中使用,首先使用composer init,创建一个composer.json文件,然后使用composer require xxx 引入某个扩展包,当你要使用这个扩展包文件时,只要在你的php入口文件(入口文件假设于vendor目录平级)中使用require ./vendor/autoload.php,就可以实现自动加载这个扩展包,而无需手动引入

composer.json内容详解

只讲require字段,其它字段详细文档

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}
名称 实例 描述
确切的版本号 1.0.2 你可以指定包的确切版本
范围 >=1.0; >=1.0,<2.0; >=1.0,<1.1|>=1.2 通过使用比较操作符可以指定有效的版本范围。有效的运算符:>、>=、<、<=、!=。你可以定义多个范围,用逗号隔开,这将被视为一个逻辑AND处理。一个管道符号 将作为逻辑OR处理。AND 的优先级高于 OR。
通配符 1.0.* 你可以使用通配符*来指定一种模式。1.0.*与>=1.0,<1.1是等效的。
赋值运算符 ~1.2 这对于遵循语义化版本号的项目非常有用。~1.2相当于>=1.2,<2.0。

composer.lock 锁定依赖版本

当你执行composer installcomposer require xxx 后,会生成或改写一个composer.json,将当时的依赖版本进行锁定,可以将此文件加入git管理中,可以锁定项目的依赖版本,防止版本不同造成的兼容性问题

上一篇 下一篇

猜你喜欢

热点阅读