Composer是什么
Composer 不是一个包管理器,它只是 PHP 用来管理依赖关系的工具,类似nodejs的npm。你可以在自己的项目中声明所依赖的外部工具库,Composer 会帮你安装这些依赖的库文件。
Composer解决了什么问题?
a) 你有一个项目依赖于若干个库。
b) 其中一些库依赖于其他库。
c) 你声明你所依赖的东西。
d) Composer 会找出哪个版本的包需要安装,并安装它们(将它们下载到你的项目中)。
Composer 部分概念解释
- composer.json文件的作用 : 该文件是一个核心文件,作用包括但不限于下载对应的包,解决包和包之间的依赖关系。
-
composer.lock文件的作用:在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定该项目的特定版本。在运行
composer install
命令时,将会检查锁文件是否存在,如果存在,它将下载指定的版本(即是composer.json文件)。所以同样是一个很重要的文件,特别是在团队开发中,所以将该文件提交到版本库中。
这意味着,任何人建立项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每件事、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。即使你独自开发项目,在六个月内重新安装项目时,你也可以放心的继续工作,即使从那时起你的依赖已经发布了许多新的版本。
Composer部分命令解释
composer insatall
,如果在当前目录下有一个 composer.json
文件,那么该命令可以帮助你安装该json文件的需要的包和解决包之间的以来关系。
composer update
,该命令用来更新composer.json
文件中所需要的包,这会更新到包的最新版本,所以一般情况下并不建议使用。
composer dumpautoload
,该命令用于更新自动加载内容
例子
- 新建文件夹,命名为
composer
- 新建一个json文件,
composer.json
,编写内容如下:
{
"require": {
"noahbuscher/macaw": "dev-master"
}
}
以上代码的意思是require 需要一个 包名称 为 noahbuscher/macaw
(这个其实是一个路由库)
- 执行
composer install
命令,便会自动下载好相应的包
composer.png
image.png
以上,会生成一个vendor
目录,一个composer.json
和composer.lock
文件,还有一个很重要的文件是vendor
目录中autoload.php
,该文件是自动加载文件,在你的代码里引入这个文件,你会得到一个自动加载支持。
- 在
composer
目录新建一个测试文件index.php
,编写代码如下
<?php
require 'vendor/autoload.php';
use \NoahBuscher\Macaw\Macaw;
Macaw::get('/', function() {
echo 'Hello world!';
});
运行这个文件,会输出Hello world!

至此,简单使用了composer,接下来,实例讲解psr-4
的自动加载
网友评论