什么是composer
如果你知道yum
、apt-get
、npm
、bower
等命令中的一种或者多种,那么,你也能很快知道composer
是什么了。没错,它就是PHP里快速安装类库的。平时,我们安装一个PHP类库,需要搜索->下载
;使用composer
,我们只要知道包名,直接composer insatll
就可以了。
如果上面的你还不知道。那你就把composer想象成360软件管家
Composer
是php项目中第三方包管理依赖工具。我们项目中只需要声明所依赖的第三方包名和版本,Composer
就会自动下源代码下载到项目中,同时我们也可以将开发好的源代码上传到公司内部composer仓库,提供给项目组里的同事下载使用。如果你是一下乐于分享的好同学,那么你也可以将平时在开发的时候封装好的一些工具类上传到composer
中央仓库,这样世界各地的程序员都可以下载你的源代码直接使用
一、安装使用
1、window下安装
自力更生
2、配置中国全量镜像
//将国外的github中央地址库改成中国全量镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
3、添加一个monolog/monolog 1.23.0包
寻一个目录下创建composer.json文件
{
"require": {
"monolog/monolog": "1.2.*"
}
}
在命令提示符下键入:
composer install
使用时,安装惯例例把第三方的代码到一个指定的目录 vendor
require_once 'vendor/autoload.php';
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
$log = new Logger('jack');
$log->pushHandler(new StreamHandler('your.log', Logger::WARNING));
$log->addWarning('这是我用来测试用的日志类库');
二、 composer.json
项目安装
1、require
Key
需要在 composer.json
文件中指定 require
key 的值。你只需要简单的告诉 Composer 你的项目需要依赖哪些包。
{
"require": {
"monolog/monolog": "1.2.*"
}
}
所以:require
需要一个 包名称 (例如 monolog/monolog
) 映射到 包版本 (例如 1.0.*
) 的对象
包名称
它允许两个不同的人创建同样名为 json
的库,而之后它们将被命名为 igorw/json
和 seldaek/json
包版本
我们引入的 monolog 版本指定为 1.0.*
。这表示任何从 1.0
开始的开发分支,它将会匹配1.0.0
、1.0.2
或者 1.0.20
2、安装依赖包
php composer.phar install
一个惯例把第三方的代码到一个指定的目录 vendor
。如果是 monolog 将会创建 vendor/monolog/monolog
目录
另一件事是 install
命令将创建一个 composer.lock
文件到你项目的根目录中
composer.lock
- 锁文件
锁文件非常重要的,因为 install
命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json
文件中的定义)
任何人建立项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每件事、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。即使你独自开发项目,在六个月内重新安装项目时,你也可以放心的继续工作,即使从那时起你的依赖已经发布了许多新的版本
如果不存在 composer.lock
文件,Composer 将读取 composer.json
并创建锁文件
这意味着如果你的依赖更新了新的版本,你将不会获得任何更新。此时要更新你的依赖版本请使用 update
命令。这将获取最新匹配的版本(根据你的 composer.json
文件)并将新版本更新进锁文件
php composer.phar update
如果你愿意,可以在你的项目中提交 composer.lock
文件。他将帮助你的团队始终针对同一个依赖版本进行测试。任何时候,这个锁文件都只对于你的项目产生影响。
如果你不想提交锁文件,并且你正在使用 Git,那么请将它添加到 .gitignore
文件中
代码实例
require_once 'vendor/autoload.php';
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
$log = new Logger('jack');
$log->pushHandler(new StreamHandler('your.log', Logger::WARNING));
$log->addWarning('这是我用来测试用的日志类库');
$markdown = '#hello';
$md = new cebe\markdown\Markdown();
$md = new cebe\markdown\GithubMarkdown();
echo $md->parse($markdown);