composer
-
composer自动加载
composer提供了以下几种自动加载类型
classmap
psr-0
psr-4
files
这几种加载方式都会用到,如laravel5.3的composer.json文件如下:
"autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/" } },
可以看到database目录是使用classmap的方式加载,而项目使用psr-4自动加载。
-
composer的使用
- <span id="command">composer的命令</span>
composer list 查看所有可用的命令,以可以使用--help获得更多有用的信息。
composer常用的命令:
初始化init
-
安装install
install
命令从当前目录读取composer.json
文件,处理了依赖关系,并把其安装到vendor
目录下。composer install
如果当前目录下存在
composer.lock
文件,它会从此文件读取依赖版本,而不是根据composer.json
文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。如果没有
composer.lock
文件,composer 将在处理完依赖关系后创建它。安装-参数
-
--prefer-source: 下载包的方式有两种:
source
和dist
。对于稳定版本 composer 将默认使用dist
方式。而source
表示版本控制源 。如果--prefer-source
是被启用的,composer 将从source
安装(如果有的话)。如果想要使用一个 bugfix 到你的项目,这是非常有用的。并且可以直接从本地的版本库直接获取依赖关系。 -
--prefer-dist: 与
--prefer-source
相反,composer 将尽可能的从dist
获取,这将大幅度的加快在 build servers 上的安装。这也是一个回避 git 问题的途径,如果你不清楚如何正确的设置。 -
--dry-run: 如果你只是想演示而并非实际安装一个包,你可以运行
--dry-run
命令,它将模拟安装并显示将会发生什么。 -
--dev: 安装
require-dev
字段中列出的包(这是一个默认值)。 -
--no-dev: 跳过
require-dev
字段中列出的包。 -
--no-scripts: 跳过
composer.json
文件中定义的脚本。 - --no-plugins: 关闭 plugins。
- --no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
- --optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
-
--prefer-source: 下载包的方式有两种:
-
更新update
-
声明依赖require
composer require 包名 版本号
-
--prefer-source: 当有可用的包时,从
source
安装。 -
--prefer-dist: 当有可用的包时,从
dist
安装。 -
--dev: 安装
require-dev
字段中列出的包。 - --no-update: 禁用依赖关系的自动更新。
- --no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
- --update-with-dependencies 一并更新新装包的依赖。
-
--prefer-source: 当有可用的包时,从
全局执行global
搜索search
展示show
依赖性检测depends
有效性检测validate
依赖包状态检测status
更新composer self-update
-
配置config
composer config --list 查看composer的配置
创建项目create-project
打印自动生成索引dump-autoload
psr-0新建文件夹后经常要跑这个命令
-
- <span id="version">composer版本号</span>
名称 实例 描述 确切的版本号 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
。
下一个重要版本(波浪号运算符)
~
最好用例子来解释: ~1.2
相当于 >=1.2,<2.0
,而 ~1.2.3
相当于 >=1.2.3,<1.3
。正如你所看到的这对于遵循 语义化版本号 的项目最有用。一个常见的用法是标记你所依赖的最低版本,像 ~1.2
(允许1.2以上的任何版本,但不包括2.0)。由于理论上直到2.0应该都没有向后兼容性问题,所以效果很好。你还会看到它的另一种用法,使用 ~
指定最低版本,但允许版本号的最后一位数字上升。