Contents
I’ve been writing code in PHP for more than 5 years and it’s a shame to admit that I didn’t know composer until recently. I’ve read some tutorials but couldn’t get my head around it. I have to admin that since I code mostly small web projects (WordPress plugins…) I don’t find the need for a package manager. However, to call myself a PHP developer, I have to know its most popular package manager. In this post, I’m going to share my understanding with composer, how to get started with it so you might benefit from my experience too.
What is composer?
Composer is a package manager tool that helps you deal with PHP dependencies. Previously, when I didn’t use Composer, I mostly use include_once to include the libraries. In addition, I had to download the libraries and put to my project all by myself. It’s no longer the case with composer.
Let’s see how it works.
Installing Composer
Installing composer is simple for all environment. If you are on Windows, you can download the installation file and go through the process in just a minute. I’m not going too much into details here since there directions on https://getcomposer.org is detailed enough.
Using composer
Using composer is a very straightforward process. We first tell composer what library to include and it will get that library for us.
Start a fresh project with composer
Now we have composer installed, let’s get started and create an empty folder and type in
composer init
The console will walk you through various steps to get information about the project you want to create. I use the default option for most of the question. After finishing all the steps, composer will create a composer.json file. Open this up and you’ll see the content you’ve just entered.
Here is the content of the composer.json
{ "name": "myn/lab", "description": "This is a test composer project", "license": "MIT", "require": {} }
As you can see, the “require” element is just an empty object. When we include dependencies, all of them will be listed here.
Adding libraries to composer
Now, we have a composer project. Let’s add a library and use it. I’m going to include a logging library called monolog in the project. You can find details about that project here.
To get the monolog library, simply run:
composer require monolog/monolog
Composer will go ahead and get monolog and also its dependencies (if any) for us.
If you check the composer.json, you’ll see it is updated:
{ "name": "myn/lab", "description": "This is a test composer project", "license": "MIT", "require": { "monolog/monolog": "^1.24" } }
Now, let’s write some code to use monolog.
Include the autoload.php file
If you notice, composer also created a folder called vendor. Inside it lies the libraries and one file called autoload.php. When creating php script, you simply include the autoload.php file to have access to all dependencies you installed.
I’m going to create an index.php in the root folder and include the autoload.php file.
<?php require 'vendor/autoload.php'; use Monolog\Logger; use Monolog\Handler\StreamHandler; $log = new Logger('test-logger'); $log->pushHandler(new StreamHandler('C:\\xampp\\htdocs\\lab\\log.txt', Logger::WARNING)); $log->warning("Testing monolog");
If I run the file now, there will be a log.txt file created at C:\xampp\htdocs\lab with the below content:
[2018-12-10 09:55:15] test-logger.WARNING: I do some test [] []
You may wonder how do I know to type in the code in the php file? Well, the maker of monolog provides example code on the library page on packagist.
Conclusion
Now I have a basic understanding of composer, the PHP package manger. I hope this post can help you understand composer a bit better. I still have a lot to learn and I’ll share all my findings here with you.