Composer (software)

Composer is an application-level package manager for the PHP programming language that provides a standard format for managing dependencies of PHP software and required libraries. It was developed by Nils Adermann and Jordi Boggiano, who continue to manage the project. They began development in April 2011 and first released it on March 1, 2012.[1] Composer is strongly inspired by Node.js's "npm" and Ruby's "bundler".[3] The project's dependency solving algorithm started out as a PHP-based port of openSUSE's libzypp satsolver.[4]

Composer
Developer(s)Nils Adermann,
Jordi Boggiano
Initial releaseMarch 1, 2012 (2012-03-01)[1]
Stable release
1.10.7 / June 3, 2020 (2020-06-03)[2]
Repository
Written inPHP
Operating systemCross-platform
TypePackage manager
LicenseMIT License
Websitegetcomposer.org

Composer runs from the command line and installs dependencies (e.g. libraries) for an application. It also allows users to install PHP applications that are available on "Packagist"[5] which is its main repository containing available packages. It also provides autoload capabilities for libraries that specify autoload information to ease usage of third-party code.

Syntax

Commands

Composer offers several parameters including :[6]

  • require: add the library in parameter to the file composer.json, and install it.
  • install: install all libraries from composer.json. It's the command to use to download all PHP repository dependencies.
  • update: update all libraries from composer.json, according to the allowed versions mentioned into it.
  • remove: uninstall a library and remove it from composer.json.

Libraries definition

Example of composer.json generated by the following command:

composer require monolog/monolog
{
    "require": {
        "monolog/monolog": "1.2.*"
    }
}

Versions

The different authorized versions of the libraries are defined by:[7]

SymbolRole (placed before a version number)Example
>=allows to extend the number. Moreover, we can use: >, <, <=."php": ">=5.5.9" includes PHP 7.
!=excludes a version.
-defines a range of versions.
¦¦add possibles versions."symfony/symfony": "2.8 ¦¦ 3.0" regroups only these two versions.
*extends to all subversions."symfony/symfony": "3.1.*" includes the 3.1.1.
~extends to the next versions of the same level."doctrine/orm": "~2.5" also concerns the 2.6, but neither the 2.4 nor the 3.0.
^same as tilde, only if there is a backward compatibility.

Supported frameworks

gollark: > i wonder how much google can tell about some1 just from their viewing habitsWell, they probably combine those with a bunch of other data. Like location, stuff installed on phone, search history, that sort of thing.
gollark: I mean, I already watched the new one, so I suppose it has evolved beyond those advert recommendation systems which show you ads for stuff you already bought.
gollark: Huh, I just opened YouTube and the very first thing there was the IR death ray video, video.
gollark: Huh. That is a... vaguely worrying amount of information, but I guess Google does that.
gollark: (unfathomable is a great word)

See also

References

  1. Software release, github.com, Retrieved April 24, 2016.
  2. "Composer". getcomposer.org. Retrieved Jun 24, 2020.
  3. Getting Started/Dependency management, getcomposer.org, Retrieved November 28, 2013.
  4. "composer/composer". Jun 23, 2020. Retrieved Jun 24, 2020 via GitHub.
  5. See packagist.org
  6. "Command-line interface / Commands". getcomposer.org.
  7. "Versions and constraints - Composer". getcomposer.org.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.