不管你是一个刚学会PHP不久的新手,还是一个有N年PHP经验的老手,一起来加入 Composer 吧,它绝对值得你使用。http://getcomposer.org/
包管理器不算什么新鲜东西,不管是 nodejs 还是 python 等机会所有程序都会有包管理器。当然,PHP也有自己官方的包管理器 ———— Pear ,可是,你懂的,Pear要多难用有多难用,吐槽的不只是一两个人。OK,Composer的出现彻底的改变了这一问题。
Composer 使用简单,真的很简单,如果你从来没安装过 composer,先安装它 :
mv composer.phar /usr/local/bin/composer
两行命令即可安装上 composer 命令。什么?你用的是window?让我先吐槽下,作为优秀PHP程序员,Mac系统是首先,*nux是次之,window除了游戏多、下电影基本就没什么优势了,没钱买Mac?装个黑苹果吧,我当年也是这么过来的,用了2年黑苹果。
接下来言归正传。
先试用下我做的一个 MyQEE框架 的包吧,在命令行里执行
等待少许时刻,MyQEE框架就安装到了 myqee-v3 目录了,是否很爽?
此时你是否想问“我自己可以做一个这样的包吗?”,“除了这个还有什么功能?”
OK,答案是肯定的,而且非常简单,我来一个个的讲。
先开始一个小测试自己体验下包的安装和使用
创建一个文件夹,在里面建立一个 composer.json 文件,内容如下:
"name": "test",
"require": {
"monolog/monolog": "~1.0.0"
}
}
这个配置定义了我们需要使用 monolog/monolog 包的 >=1.0.0 且 <1.1 中的最高版本。monolog 是一个记录日志的包,Github地址 https://github.com/Seldaek/monolog/
保存好后,执行
等待解析,安装完毕,你会看到多了1个vendor目录,composer 默认会把需要 require的类库都安装在这个目录里,然后在这个目录里生成一个 autoload.php 文件,接下来你只要
加载这个文件,就可以开始使用你需要的包的代码了,比如:
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
// add records to the log
$log->addWarning('Foo');
$log->addError('Bar');
保存成 test.php 然后就可以使用到刚刚安装的 Monolog 了。
什么?刚刚装的包版本有点低?我想再加一个包可以吗?当然可以,修改 composer.json 中内容后执行
大功告成。它会把你在配置移除的包都删掉,也会添加上你新加的包,你需要做的就是 update 一下而已。
比如,我们需要再添加一个 twig(一个PHP模块包) twig/twig 和 phpunit/phpunit (一个程序测试包)
版本真多,找一个自己喜欢的版本或者直接用最高版本,这样写:
"name": "test",
"require": {
"monolog/monolog": "~1.0.0",
"phpunit/phpunit": "3.7.24",
"twig/twig": "~1.0"
}
}
执行
输出
Updating dependencies (including require-dev)
- Installing symfony/yaml (v2.3.4)
Loading from cache
- Installing phpunit/php-text-template (1.1.4)
Loading from cache
- Installing phpunit/phpunit-mock-objects (1.2.3)
Loading from cache
- Installing phpunit/php-timer (1.0.5)
Loading from cache
- Installing phpunit/php-token-stream (1.2.0)
Loading from cache
- Installing phpunit/php-file-iterator (1.3.3)
Loading from cache
- Installing phpunit/php-code-coverage (1.2.12)
Loading from cache
- Installing phpunit/phpunit (3.7.24)
Loading from cache
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.0.5)
phpunit/phpunit suggests installing phpunit/php-invoker (>=1.1.0,<1.2.0)
Writing lock file
Generating autoload files
提示你刚刚帮你安装了这些包,你会发现,在 vendor 目录里除了有新加的 phpunit 和 twig 外还有 symfony/yaml 等。是的,因为 phpunit/phpunit 还依赖这个包,所以 composer 会给你自动装好,你就直接用了。
现在,你把 composer.json 中的 phpunit/phpunit 配置删掉,然后再执行 composer update 看看,将输出:
Generating autoload files
Macintosh:test4 jonwang$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Removing phpunit/phpunit (3.7.24)
- Removing phpunit/php-code-coverage (1.2.12)
- Removing phpunit/php-file-iterator (1.3.3)
- Removing phpunit/php-token-stream (1.2.0)
- Removing phpunit/php-timer (1.0.5)
- Removing phpunit/phpunit-mock-objects (1.2.3)
- Removing phpunit/php-text-template (1.1.4)
- Removing symfony/yaml (v2.3.4)
Writing lock file
Generating autoload files
它告诉你,这些多余的包已经被移除了,你不用担心这些被移除的包残留在你的代码中。
以上的例子可以让你非常直观的明白怎么使用 composer,说白了,不管你是用的自己的程序还是别的框架,只要载入 vendor/autoload.php 你的程序就进入了 composer 的世界,那么剩下的你需要做的就是寻找到自己喜欢的包,狠狠的 require 他们,尽情的使用。
那么 composer 的包多么?这么好的管理器当然受欢迎了,现在越来越多的优秀开源代码都已经开始加入 composer 了。
你可以在 composer 官方提供的包维护网站里搜搜自己需要的包 https://packagist.org/,也可以自己在里面发布自己的包(后面讲)
开篇就到这,接下来会一步步的教你如何制作自己的包。
我这里composer很慢, 创建更新都得好几十分钟, 有时候卡着就不动了, 你那快吗?
差不多
更新包经常超时,已放弃
天朝网络,爬墙吧
爬墙也不行啊,这几天慢的很厉害。
血慢
搞PHP一定要这么装逼吗?
大天朝都慢。。