介绍
Composer是PHP一个伟大的依赖管理工具。 它所做的是跟踪您声明您的项目需要的库,并为您提取和安装它们。 它不是一个包管理器本身,因为它不是在全局默认使用,而是在你可能有的每个单独的项目。
它用于什么? 假设你有一个依赖于几个图书馆的应用程序项目,而这些图书馆又可以依赖于其他图书馆。 一旦你在一个小的.json文件中声明这些依赖项,Composer将会跟踪这些库并为你安装它们。
在本教程中,我们将在VPS上安装Composer,看看它是如何工作的,以及我们可以用它做什么。 为此,我将使用运行Ubuntu的服务器和LAMP已经安装就可以了。 至于Composer的具体要求,它在Linux,OS X和Windows上运行,但它需要您安装PHP 5.3.2+。
确保您已安装所有要求:
sudo apt-get install php5 git php5-curl
安装
首先,您需要将Composer下载到您的项目文件夹中。 让我们创建一个空文件夹为此我们在/ var / WWW的Apache Web根目录文件夹,名为MY_PROJECT:
cd /var/www mkdir my_project cd my_project
使用以下命令将Composer下载到此文件夹中:
curl -sS https://getcomposer.org/installer | php
您应该看到类似这样的成功消息:
All settings correct for using Composer Downloading... Composer successfully installed to: /var/www/my_project/composer.phar Use it: php composer.phar
现在,如果你在项目文件夹检查,你会看到只有一个文件已经下载:composer.phar -可以在命令行中运行一个PHP归档文件。
如果你在不同的文件夹您的项目,但不想导航回到项目文件夹中下载Composer,您可以指定--install-dir选项,并不管你指定它会下载:
curl -sS https://getcomposer.org/installer | php -- --install-dir=/var/www/another_folder
这个命令可以从任何地方运行,它会在位于/ var / WWW another_folder安装Composer。 要检查Composer是否正常工作,可以使用以下命令,将显示可用命令的列表:
php composer.phar
使用Composer
要在项目中使用的Composer,你需要一个文件:composer.json。 在此文件中,您将描述项目的依赖项。 比方说,我们的项目依赖于DigitalOcean库 ,帮助与DigitalOcean API进行交互。 所以,让我们创建文件:
nano composer.json
在此文件中,您可以粘贴以下内容:
{ "require": { "toin0u/digitalocean": "1.2.1" } }
保存文件并退出。 有了这个代码简单的块,您可以指定你的项目需要的库(称为digitalocean)由供应商toin0u创建。 冒号后你写的,你需要的版本-在这种情况下是1.2.1。 在这里你可以指定任何你想要的版本,甚至使用通配符。 但是,你从哪里得到这些关于包的信息?
有一个伟大的网站,你可以找到很多图书馆的所有必要的composer.json文件中指定的信息: Packagist 。 该DigitalOcean API库也能在Packagist找到 ,你可以查看你有什么的要求块来指定。
要为版本使用通配符,您可以指定以下内容:
"toin0u/digitalocean": "1.2.*"
这将匹配以1.2(1.2.0,1.2.1等)开始的任何版本。 此外,您可以指定多个依赖库,而不只是一个。 您可以在require块中添加多个条目:
"require": { "toin0u/digitalocean": "1.2.1", "acme/foo": "1.0" }
OK,所以现在你的项目已经指定了它的依赖项,你需要运行一个命令Composer来获取和安装到你的项目:
php composer.phar install
这将找到的最新版本,我们指定的号码相匹配的包,并将其下载到一个名为/供应商正确的,在你的项目文件夹。 在我们的例子中,我们会发现现在的供应商/ toin0u / digitalocean文件夹中的库。 此外,Composer创建一个composer.lock文件中,它指定它安装的软件包的确切版本,并锁定该项目的版本。
该.lock文件的目的是从安装其他版本的项目限制Composer。 所以,当你运行安装命令,Composer将首先检查这个文件,将安装了哪些新的规定,而不是什么以.json文件告诉它。 这是伟大的,因为如果你的依赖性相当严格,其他人需要部署您的项目,你可以放心,正在使用完全相同的版本的库。
正如我们所看到的,如果没有.lock文件,Composer将根据其从以.json文件安装的依赖关系创建一个。 但是,如果你确实要覆盖.lock文件和升级相关的库更新的版本,可以运行下面的命令:
php composer.phar update
这将让在composer.json文件符合标准并覆盖了新的依赖的composer.lock文件的依赖库的最新的稳定版本。 如果你只想要一个特定的库得到更新(这很可能是真的在大多数情况下),你可以运行update命令,并通过你需要更新以下面的格式选项的包:
php composer.phar update vendor/package vendor/package2
或者可以使用通配符更新特定供应商的所有软件包:
php composer.phar update vendor/*
自动加载
Composer另一个很酷的事情是它的自动加载功能。 对于那些提供自动加载信息库,Composer自动在/供应商的文件夹,你可以在项目中包含直接生成一个autoload.php文件。 然后你可以直接开始使用这些库中的类。 在你的PHP项目中,你可以指定:
require 'vendor/autoload.php';
你很好去。
结论
Composer是PHP世界中广泛使用的工具。 有很多项目和框架,使用Composer来管理和安装他们的软件包和依赖项。 所以熟悉它如何工作是相当重要的。