Igor Kromin |   Consultant. Coder. Blogger. Tinkerer. Gamer.

Until recently all of my PHP development relied on manually downloading library dependencies and making them work with existing projects. Now that I started work on a new project from scratch I decided to try out Composer for library management and wow does it save a lot of time and hassle!

Installation is very easy, just use curl to download it and pipe to the php executable. I prefer to keep Composer inside my project directory but it is also possible to install globally.
 Installing Composer
curl -s http://getcomposer.org/installer | php


That will create a file called composer.phar, which is the entire Composer executable script. At this point you have a couple of options. You can create a composer.json file manually or use './composer.phar init' to generate the file for you by answering a number of questions. You can then use then './composer.phar require ' to add a library to your project.

In my case the composer.json file looks something like this...
 composer.json
{
"name": "ikromin/travelblog.ws",
"authors": [
{
"name": "Igor Kromin",
"email": "[email protected]"
}
],
"require": {
"jackalope/jackalope-doctrine-dbal": "^1.2",
"smarty/smarty": "^3.1"
}
}




What that means is the name of my project is 'ikromin/travelblog.ws' and I am the author. In addition the project requires the jackalope/doctrine-dbal and the smarty libraries (specifying the version numbers).

Running './composer.phar install' will download and install all of the required libraries, including their dependencies, into your project.

Once that is done, it's just a matter of including the auto-loader like this...
 Autoloader
<?php
require __DIR__ . '/vendor/autoload.php';
...


...and you can begin to use the libraries. It's as simple as that!

-i

Did you like this post or found it useful? Considering supporting this Blog to keep its web servers running, any amount helps! Thanks!
Have comments or feedback on what I wrote? Please share them below!
comments powered by Disqus
Other posts you may like...