[关闭]
@a5635268 2017-05-13T21:14:15.000000Z 字数 1855 阅读 1317

PHPcomposer使用手札[ing]

PHP


参考链接

中文文档: http://www.phpcomposer.com/
五个技巧:http://www.jb51.net/article/53881.htm

composer的原理步骤

  1. 分析你的composer.json文件,找到所有需要安装的第三方软件的名称和对应的版本号
  2. 从本地缓存目录和Packagist服务器获取上述的第三方软件的信息,包含最新版本,代码存放地址等等
  3. 分析依赖关系,根据包依赖、版本是否有更新等条件计算出最终需要安装的第三方软件的清单
  4. 根据这份清单下载第三方软件的源代码,根据参数的不同,下载方式会是用Git Clone项目或者是直接下载Zip包
  5. 将第三方软件安装到本地,一般是安装在项目下的./vendor目录,同时根据参数生成用于载入第三方软件的autoload文件

安装

配置中国镜像

  1. composer config -g repo.packagist composer https://packagist.phpcomposer.com

composer.json

http://docs.phpcomposer.com/01-basic-usage.html#composer.json-Project-Setup

具体键名说明: http://docs.phpcomposer.com/04-schema.html#JSON-schema

安装依赖包

http://docs.phpcomposer.com/01-basic-usage.html#Installing-Dependencies

  1. php composer.phar install

报错解决方案:
1. http://my.oschina.net/chinahub/blog/540109
2. http://stackoverflow.com/questions/33909559/php-composer-xdebug-warning

composer.lock - 锁文件

http://docs.phpcomposer.com/01-basic-usage.html#composer.lock-The-Lock-File

第一次 composer install 以后就会生成这个锁文件,一旦有这个锁文件以后的update就是根据这个锁文件进行更新,如果composer.json 里面有了改变,哪怕一个小小的空格都会导致改变文件的md5sum。然后Composer就会警告你哈希值和composer.lock中记载的不同。

Packagist

http://docs.phpcomposer.com/01-basic-usage.html#Packagist

一些优秀的包:

vinelab/http:https://packagist.org/packages/vinelab/http

自动加载

http://docs.phpcomposer.com/01-basic-usage.html#Autoloading

autoload提供了一些自动加载的方案,更改完该内容以后就composer update一下;

  1. "autoload": {
  2. "psr-4": {
  3. "App\\": "app/"
  4. },
  5. "files": [
  6. "app/Tool/Tool.php" //files一般用来做函数库加载的。
  7. ]
  8. },
  9. "autoload-dev": {
  10. "classmap": [ # 直接 new \ClassName 来使用;
  11. "tests/", # 如果此处是目录,那此目录下新增加了类文件,也要update一下,内部是循环加载进vendor/composer/autoload_classmap.php文件中;
  12. "database/"
  13. "SomeClass.php"
  14. ]
  15. }

其他技巧

1. 仅更新单个库

  1. composer update foo/bar

2. 如果composer.json仅仅是增加了点描述,这个时候我们可以执行 update nothing 来更新composer.lock。

3. 不编辑composer.json的情况下安装库

  1. composer require "foo/bar:1.0.0"

4. 自动克隆仓库,并检出指定的版本

  1. composer create-project doctrine/orm path 2.2.0

5. 考虑缓存,dist包优先

6. 考虑修改,源代码优先

其它博客连接

https://lvwenhan.com/tag/Composer/page/2

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注