Composer is a dependency management tool for PHP. By default, it does not install anything global but rather on a per-project basis. We can use it to redistribute our project in order to define which libraries and packages it needs for it to be successfully executed. Using Composer is quite simple. All it creating is to create a composer.json file in the root directory of our project with similar content, as follows:
{
"require": {
"twig/twig": "~1.0"
}
}If we were to create the preceding composer.json file in some empty directory and execute the composer install command within that directory, Composer will pickup the composer.json file and install the defined dependencies for our project. The actual install action implies on downloading the required code from a remote repository to our machine. In doing so, the install command creates the composer.lock file, which writes a list of the exact versions of dependencies installed.
We can also simply execute the command twig/twig:~1.0 that a Composer requires, which does the same thing but with a different approach. It does not require us to write a composer.json file, and if one exists, it will update it.
Learning about Composer itself is out of the scope of this book, for which the recommended official documentation is available at https://getcomposer.org/doc.
Composer allows packaging and formal dependency management, making it a great choice to slice our all-in-one modular application into a series of Composer packages. These packages need a repository.