> 本文主要是使用composer中的一些记录
## 参考链接
中文文档: http://www.phpcomposer.com/
## composer的原理步骤
1. 分析你的composer.json文件,找到所有需要安装的第三方软件的名称和对应的版本号
2. 从本地缓存目录和Packagist服务器获取上述的第三方软件的信息,包含最新版本,代码存放地址等等
3. 分析依赖关系,根据包依赖、版本是否有更新等条件计算出最终需要安装的第三方软件的清单
4. 根据这份清单下载第三方软件的源代码,根据参数的不同,下载方式会是用Git Clone项目或者是直接下载Zip包
5. 将第三方软件安装到本地,一般是安装在项目下的./vendor目录,同时根据参数生成用于载入第三方软件的autoload文件
## [安装][1]
> 注意安装完要执行composer self-update来检查是否是最新的
## [配置中国镜像][2]
```
composer config -g repo.packagist composer https://packagist.phpcomposer.com
```
## [composer.json](https://docs.phpcomposer.com/04-schema.html)
- [具体键名说明](http://docs.phpcomposer.com/04-schema.html#JSON-schema)
## [composer.lock - 锁文件](http://docs.phpcomposer.com/01-basic-usage.html#composer.lock-The-Lock-File)
第一次 `composer install` 以后就会生成这个锁文件,一旦有这个锁文件以后的update就是根据这个锁文件进行更新,如果composer.json 里面有了改变,哪怕一个小小的空格都会导致改变文件的md5sum。然后Composer就会警告你哈希值和composer.lock中记载的不同。
## [自动加载](http://docs.phpcomposer.com/01-basic-usage.html#Autoloading)
autoload提供了一些自动加载的方案,更改完该内容以后就composer update一下;
```
"autoload": {
"psr-4": {
"App\\": "app/"
},
"files": [
"app/Tool/Tool.php" //files一般用来做函数库加载的。
]
},
"autoload-dev": {
"classmap": [ # 直接 new \ClassName 来使用;
"tests/", # 如果此处是目录,那此目录下新增加了类文件,也要update一下,内部是循环加载进vendor/composer/autoload_classmap.php文件中;
"database/",
"SomeClass.php"
]
}
```
## 其他技巧
1\. 仅更新单个库
```php
composer update foo/bar
```
2\. 如果composer.json仅仅是增加了点描述,这个时候我们可以执行 `update nothing` 来更新composer.lock。
3\. 不编辑composer.json的情况下安装库
```
composer require "foo/bar:1.0.0"
```
4\. 自动克隆仓库,并检出指定的版本
```
composer create-project doctrine/orm path 2.2.0
```
5\. 考虑缓存,dist包优先
6\. 考虑修改,源代码优先
7\. `composer show -i` 查看当前已安装的包列表及其各自的版本
## 其它参考
https://lvwenhan.com/tag/Composer/page/2
Composer 项目官方:http://getcomposer.org
Composer Github项目:https://github.com/composer/composer
[1]: https://pkg.phpcomposer.com/#how-to-install-composer
[2]: https://pkg.phpcomposer.com/
- 现代化PHP特性
- php7常用特性整理
- 反射机制Reflection
- 依赖注入与服务容器
- 抽象类与接口
- 类多继承的替代方案Traits
- 类的延迟绑定(后期绑定)
- 生成器语法
- 匿名函数和闭包
- 匿名类
- 理解php的output buffer
- 断言ASSERT
- 魔术方法小结
- Zend Opcache字节码缓存
- 内置的http服务器
- SPL标准库
- 【SPL标准库专题(1)】SPL简介
- 【SPL标准库专题(2)】Iterator
- 【SPL标准库专题(3)】Classes
- 【SPL标准库专题(4)】Exceptions
- 【SPL标准库专题(5)】Datastructures:SplDoublyLinkedList
- 【SPL标准库专题(6)】Datastructures:SplStack & SplQueue
- 【SPL标准库专题(7)】Datastructures:SplPriorityQueue
- 【SPL标准库专题(8)】Datastructures:SplHeap & SplMaxHeap & SplMinHeap
- 【SPL标准库专题(9)】Datastructures:SplFixedArray
- 【SPL标准库专题(10)】Datastructures:SplObjectStorage
- PHPcomposer使用手札[ing]
- PHP中的多态
- 通过命名空间实现自动加载的框架雏形
- 日期与金额
- PHPstorm使用攻略
- 笔记本