2.3 KiB
Introduction
Composer is a tool for dependency management in PHP. It allows you to declare the dependencies of your project and will install them for you.
Dependency management
One important distinction to make is that composer is not a package manager. It deals with packages, but it manages them on a per-project basis. By default it will never install anything globally. Thus, it is a dependency manager.
This idea is not new by any means. Composer is strongly inspired by node's npm and ruby's bundler. But there has not been such a tool for PHP so far.
The problem that composer solves is the following. You have a project that depends on a number of libraries. Some of those libraries have dependencies of their own. You declare the things you depend on. Composer will then go ahead and find out which versions of which packages need to be installed, and install them.
Declaring dependencies
Let's say you are creating a project, and you need a library that does logging.
You decide to use monolog. In order to
add it to your project, all you need to do is create a composer.json
file
which describes the project's dependencies.
{
"require": {
"monolog/monolog": "1.0.*"
}
}
We are simply stating that our project requires the monolog/monolog
package,
any version beginning with 1.0
.
Installation
To actually get it, we need to do two things. The first one is installing composer:
$ curl -s http://getcomposer.org/installer | php
This will just check a few PHP settings and then download composer.phar
to
your working directory. This file is the composer binary.
You can install composer to a specific directory by using the --install-dir
option and providing a target directory (it can be an absolute or relative path):
$ curl -s http://getcomposer.org/installer | php -- --install-dir=bin
After that we run the command for installing all dependencies:
$ php composer.phar install
This will download monolog and dump it into vendor/monolog/monolog
.
Autoloading
After this you can just add the following line to your bootstrap code to get autoloading:
require 'vendor/.composer/autoload.php';
That's all it takes to have a basic setup.