w3resource
Composer tutorial

Package installation using composer

Introduction

In the previous tutorial, we looked at what Composer is, and how it helps us to  manage libraries/packages required for our projects. We also talked on installing Composer Locally and Globally.

In this tutorial, we will use composer to install  and manage packages in our project.  This tutorial assumes that you already have a composer running in your PC. If you don’t, please refer to the previous tutorial so that you can follow along.

For simplicity, and clarity, we will be installing a “Monolog”, a data logging library. Monolog helps you log your files, inboxes and some web services. You don’t need to be a master in the use of “Monolog” to follow along, as the process of installing other packages that will be useful in your project is like that of installing monolog.

#Setup:

To install Composer in your project, you need an important file called “composer.json”.  This file is where you define all the dependencies/packages needed in your project. So quickly create a project folder, open it in any editor of your choice and create this file “composer.json”.

#The “require” key:

This is a set of JSON definitions used to tell composer what packages your project will depend on. There may be other variables you may need to define in this composer.json file, but most of the time, this “require” key is often the only content of the composer.json file.

{
“require”:{
“monolog/monolog”:”1.0.*”
}
}

From the above code snippet, we basically created an empty project folder, and created the “composer.json” file inside it. Then inside the composer.json file, goes my “require” key.

We will observe that “require” takes an object, that assigns package names(monolog/monolog) to version constraints (1.1.*).

Composer uses this information to search for the right set of packages in the package repositories registered or in Packagist when there is no repository specified, like in the above example.

#Package Names

The package names consist of a vendor name and a project name. In most cases these names are identical. This naming format plays a vital role in preventing naming conflicts, as two or more persons can have a package with the same name but different vendor name.

#Version Specification

As seen in the above code snippet, we specified, telling Composer to download only the version of monolog in the version range of 1.1.0 and above using the version constraint ”1.0.*”. In this case, the composer will download the latest stable version, within the specified version range.

#Installing Dependencies

We have already told composer the packages to install in our application, now how do we install these packages in our project?

To install these defined dependencies to our project, we must run the composer “install” command from the terminal in our project directory in the as shown in the code snippet below:

composer install

This composer install command will trigger Composer create download the specified version of packages in the “require” key and save them to a default folder ,“vendor” folder. In our case, composer will download monolog and its dependencies into this vendor folder.

Composer will also create an important file called “composer.lock” where it will register all the versions of packages downloaded for our project.

The “composer.lock” file is very important as it ensures that the exact version of packages listed in the composer.lock file is consistent for anyone working on your project.

#Updating Packages

We can also update some of these installed packages in our project to their latest version, but this must be done with care in order to prevent our program from breaking. To update packages, we use the composer update command as shown in the code snippet.

composer update

The above code snippet will update the whole packages, installed in our project. To update only a single package, we need to specify the name of the package to update as shown below.

composer update monolog/monolog

In the above tutorial, we saw how to add composer to our project and how to use it for package management. In the next tutorial, we will take a deeper dive in the exploration of the composer and what it has to offer.

In the main time, don’t forget to like and share this tutorial with your friends, also follow us on social media for more updates.

Previous: Making libraries/packages installable using composer
Next: The concept of composer packages and repositories