1
0
Fork 0
composer/doc/00-intro.md

66 lines
2.0 KiB
Markdown

# Introduction
Composer is a tool for dependency management in PHP. It allows you to declare
the dependencies of your project and will install these dependencies 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](http://npmjs.org/) and ruby's [bundler](http://gembundler.com/).
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 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](https://github.com/Seldaek/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.
```json
{
"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 is the composer binary.
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:
```php
require 'vendor/.composer/autoload.php';
```
That's all it takes to have a basic setup.