MOCKSTACKS
EN
Questions And Answers

More Tutorials









PHP Composer Dependency Manager


Composer is a dependency/package manager for PHP. It can be used to install, keep track of, and update your project dependencies. Composer also takes care of autoloading the dependencies that your application relies on, letting you easily use the dependency inside your project without worrying about including them at the top of any given file.

Dependencies for your project are listed within a composer.json file which is typically located in your project root. This file holds information about the required versions of packages for production and also development.

A full outline of the composer.json schema can be found on the Composer Website.

This file can be edited manually using any text-editor or automatically through the command line via commands such as composer require or composer require-dev .

To start using composer in your project, you will need to create the composer.json file. You can either create it manually or simply run composer init. After you run composer init in your terminal, it will ask you for some basic information about your project: Package name (vendor/package - e.g. laravel/laravel), Description - optional, Author and some other information like Minimum Stability, License and Required Packages.

The require key in your composer.json file specifies Composer which packages your project depends on. require takes an object that maps package names (e.g. monolog/monolog) to version constraints (e.g. 1.0.*).
{
 "require": {
 "composer/composer": "1.2.*"
 }
}

To install the defined dependencies, you will need to run the composer install command and it will then find the defined packages that matches the supplied version constraint and download it into the vendor directory. It's a convention to put third party code into a directory named vendor. You will notice the install command also created a composer.lock file.

A composer.lock file is automatically generated by Composer. This file is used to track the currently installed versions and state of your dependencies. Running composer install will install packages to exactly the state stored in the lock file.

Autoloading with Composer


While composer provides a system to manage dependencies for PHP projects (e.g. from Packagist), it can also notably serve as an autoloader, specifying where to look for specific namespaces or include generic function files.

It starts with the composer.json file:
{
 // ...
 "autoload": {
 "psr-4": {
 "MyVendorName\\MyProject": "src/"
 },
 "files": [
 "src/functions.php"
 ]
 },
 "autoload-dev": {
 "psr-4": {
 "MyVendorName\\MyProject\\Tests": "tests/"
 }
 }
}

This configuration code ensures that all classes in the namespace MyVendorName\MyProject are mapped to the src directory and all classes in MyVendorName\MyProject\Tests to the tests directory (relative to your root directory). It will also automatically include the file functions.php.

After putting this in your composer.json file, run composer update in a terminal to have composer update the dependencies, the lock file and generate the autoload.php file. When deploying to a production environment you would use composer install --no-dev. The autoload.php file can be found in the vendor directory which should be generated in the directory where composer.json resides.

You should require this file early at a setup point in the lifecycle of your application using a line similar to that below.

require_once __DIR__ . '/vendor/autoload.php';

Once included, the autoload.php file takes care of loading all the dependencies that you provided in your composer.json file.

Some examples of the class path to directory mapping:

  • MyVendorName\MyProject\Shapes\Square ➔ src/Shapes/Square.php.

  • MyVendorName\MyProject\Tests\Shapes\Square ➔ tests/Shapes/Square.php.

  • Installation


    You may install Composer locally, as part of your project, or globally as a system wide executable.

    Locally

    To install, run these commands in your terminal.
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    # to check the validity of the downloaded installer, check here against the SHA-384:
    # https://composer.github.io/pubkeys.html
    php composer-setup.php
    php -r "unlink('composer-setup.php');"

    This will download composer.phar (a PHP Archive file) to the current directory. Now you can run php composer.phar to use Composer, e.g.
    php composer.phar install

    Globally
    To use Composer globally, place the composer.phar file to a directory that is part of your PATH

    mv composer.phar /usr/local/bin/composer

    Now you can use composer anywhere instead of php composer.phar, e.g.

    composer install


    Conclusion

    In this page (written and validated by ) you learned about PHP Composer Dependency Manager . What's Next? If you are interested in completing PHP tutorial, your next topic will be learning about: PHP Magic Methods.



    Incorrect info or code snippet? We take very seriously the accuracy of the information provided on our website. We also make sure to test all snippets and examples provided for each section. If you find any incorrect information, please send us an email about the issue: mockstacks@gmail.com.


    Share On:


    Mockstacks was launched to help beginners learn programming languages; the site is optimized with no Ads as, Ads might slow down the performance. We also don't track any personal information; we also don't collect any kind of data unless the user provided us a corrected information. Almost all examples have been tested. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. By using Mockstacks.com, you agree to have read and accepted our terms of use, cookies and privacy policy.