Dependency Manager for PHP

Overview

Composer - Dependency Management for PHP

Composer helps you declare, manage, and install dependencies of PHP projects.

See https://getcomposer.org/ for more information and documentation.

Continuous Integration

Installation / Usage

Download and install Composer by following the official instructions.

For usage, see the documentation.

Packages

Find packages on Packagist.

Community

IRC channels are on irc.freenode.org: #composer for users and #composer-dev for development.

For support, Stack Overflow also offers a good collection of Composer related questions.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project and its community you agree to abide by those terms.

Requirements

PHP 5.3.2 or above (at least 5.3.4 recommended to avoid potential bugs)

Authors

See also the list of contributors who participated in this project.

Security Reports

Please send any sensitive issue to [email protected]. Thanks!

License

Composer is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Issues
  • zlib_decode(): data error

    zlib_decode(): data error

    I realise this issue has been raised before (#3006, #3270) but no replies were given there and the results are many months old. Since a while, I'm getting the error mentioned in the issue title, when doing a composer require xxx/yyy or composer install Stack trace from the "very verbose" mode is as follows:

      [ErrorException]
      zlib_decode(): data error
    
    
    
    Exception trace:
     () at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Util/RemoteFilesystem.php:218
     Composer\Util\ErrorHandler::handle() at n/a:n/a
     zlib_decode() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Util/RemoteFilesystem.php:218
     Composer\Util\RemoteFilesystem->get() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Util/Remote
    Filesystem.php:83
     Composer\Util\RemoteFilesystem->getContents() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Rep
    ository/ComposerRepository.php:587
     Composer\Repository\ComposerRepository->fetchFile() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Compos
    er/Repository/ComposerRepository.php:296
     Composer\Repository\ComposerRepository->whatProvides() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Com
    poser/DependencyResolver/Pool.php:191
     Composer\DependencyResolver\Pool->computeWhatProvides() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Co
    mposer/DependencyResolver/Pool.php:180
     Composer\DependencyResolver\Pool->whatProvides() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/
    DependencyResolver/RuleSetGenerator.php:221
     Composer\DependencyResolver\RuleSetGenerator->addRulesForPackage() at phar://C:/ProgramData/ComposerSetup/bin/composer.
    phar/src/Composer/DependencyResolver/RuleSetGenerator.php:293
     Composer\DependencyResolver\RuleSetGenerator->addRulesForJobs() at phar://C:/ProgramData/ComposerSetup/bin/composer.pha
    r/src/Composer/DependencyResolver/RuleSetGenerator.php:333
     Composer\DependencyResolver\RuleSetGenerator->getRulesFor() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/sr
    c/Composer/DependencyResolver/Solver.php:172
     Composer\DependencyResolver\Solver->solve() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Insta
    ller.php:505
     Composer\Installer->doInstall() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Installer.php:230
    
     Composer\Installer->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Command/RequireCommand.
    php:158
     Composer\Command\RequireCommand->execute() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/cons
    ole/Symfony/Component/Console/Command/Command.php:257
     Symfony\Component\Console\Command\Command->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfon
    y/console/Symfony/Component/Console/Application.php:874
     Symfony\Component\Console\Application->doRunCommand() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/s
    ymfony/console/Symfony/Component/Console/Application.php:195
     Symfony\Component\Console\Application->doRun() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Co
    nsole/Application.php:146
     Composer\Console\Application->doRun() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/S
    ymfony/Component/Console/Application.php:126
     Symfony\Component\Console\Application->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Cons
    ole/Application.php:82
     Composer\Console\Application->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/bin/composer:43
     require() at C:\ProgramData\ComposerSetup\bin\composer.phar:25
    

    Any thoughts on why this happens and/or how to fix it? I'm only getting this on one of my systems, and it worked fine in the past, I'm not sure what changed since. I have reinstalled Composer just now, so I'm using the latest version. Specs of my system: Windows 8.1 x64, PHP 5.6.5 x64

    Edit: when I require a new dependency on an other machine, then run composer install on my own system, that works just fine.

    Edit 2: I just noticed Composer is connecting to http://packagist.org, despite having openssl enabled.

    Support 
    opened by Ugoku 267
  • Composer update runs out of memory

    Composer update runs out of memory

    Running the "composer update" command results in a fatal error:

    Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 79 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 100

    Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 71 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php on line 700

    Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 72 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 104

    I already tried removing the vendors in my Symfony2 project. After removing the vendors and running a "composer install" command I get no errors. Running a "composer update" directly after the install results in the same memory error. The current memory limit is set to 512MB, that should be enough, right?

    What can be the cause of the sudden memory issue? Can I take other steps in solving this issue? As far as I can tell, the dependencies haven't changed and I don't include many vendors.

    Any help is much appreciated!

    Kind regards, Jeroen van Rooij

    Ps. I'm using the latest composer version and al the requires in the json are set to a fixed version

    opened by jrooi 181
  • Installs plugins and dependencies before installation of other packages

    Installs plugins and dependencies before installation of other packages

    | Q | A | | --- | --- | | Bug fix? | yes (installation plugin order) | | New feature? | yes | | BC breaks? | no | | Deprecations? | no | | Tests pass? | yes | | Fixed tickets | #2972, #2879, #2878, #1121, #3078 | | License | MIT |

    This feature allows installing plugins and their dependencies before restarting the installation of other packages in the project. It allows the plugins to be added directly in the project and must not be installed in global.

    With this feature it is for example possible to create a plugin adding automatically the repositories, without that Composer throws an error when the first installation.

    It does not change the original behavior of the install, but at the same time, fixes a "strange" behavior of the order of the installation of plugins and their dependencies.

    The dependencies plugins must be installed before the plugin, then the plugin must be installed, and then the rest of depedencies can be installed.

    Test example:

    {
        "repositories": [
            {
                "type": "package",
                "package": [
                    { "name": "pkg", "version": "1.0.0" },
                    { "name": "pkg2", "version": "1.0.0" },
                    { "name": "inst", "version": "1.0.0", "type": "composer-plugin" },
                    { "name": "inst2", "version": "1.0.0", "type": "composer-plugin", "require": { "pkg2": "*" } }
                ]
            }
        ],
        "require": {
            "pkg": "1.0.0",
            "inst": "1.0.0",
            "inst2": "1.0.0"
        }
    }
    

    The order should be:

    Installing inst (1.0.0)
    Installing pkg2 (1.0.0)
    Installing inst2 (1.0.0)
    Installing pkg (1.0.0)
    

    and not (actually):

    Installing inst (1.0.0)
    Installing pkg (1.0.0)
    Installing pkg2 (1.0.0)
    Installing inst2 (1.0.0)
    
    Feature 
    opened by francoispluchino 131
  • composer is very slow.

    composer is very slow.

    what happend???

    opened by choiks141 116
  • Install fails because of getcomposer.org certificate verify failed

    Install fails because of getcomposer.org certificate verify failed

    @Seldaek @naderman we just saw this in a capifony deploy:

    Download failed: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed file_get_contents(): Failed to enable crypto file_get_contents(https://getcomposer.org/composer.phar): failed to open stream: operation failed

    Bug 
    opened by ChristianRiesen 113
  • Drupal can't use composer install because it requires a Github Auth token on installation

    Drupal can't use composer install because it requires a Github Auth token on installation

    See also https://www.drupal.org/node/1475510

    Problem: when running composer install the user is prompted to input a Github auth token. That is a serious burden for 3000+ Drupal core contributors that will need to run composer install and a significant waste of developer time. Some users do not want to create a Github account.

    It seems that composer only prompts for a Github auth token in interactive shells? I have never seen that prompt on Travis CI for PHP projects for example.

    Proposed solution: make composer install on interactive shells behave the same as in non interactive ones: always fall back to install from source (git clone) and never prompt the user for a Github token. Users should be able to opt-in for faster downloads with Github auth tokens, but this should never be an interactive usability WTF.

    opened by klausi 104
  • Beginners being herded into command line due to composer

    Beginners being herded into command line due to composer

    You wanted a specific complaint? Here it is:

    Why are beginners being herded into the command line, due to composer?

    Application developers are now frequently only including composer installs.

    This effectively locks beginners out of the learning process. It creates yet another barrier to entry, simply for the convenience of a minority.

    Question 
    opened by Markkemp 93
  • Using YAML for configuration?

    Using YAML for configuration?

    Why didn't composer founders choose YAML? Json even does not support comments inside a file. Yaml is proved to be the best choise for configuration and Symfony proved that.

    But it's not too late to also allow yaml usage aswell. 4 example search for composer.json, if not found - for composer.yml

    opened by olegstepura 82
  • Allow comments in composer.json

    Allow comments in composer.json

    I know comments are not allowed in the json spec, but some parsers are more tolerant than others. And being able to annotate composer.json would be of great use (f.e. when playing around commenting different parts of composer.json without having to commit, stash or save to a different file)

    opened by gggeek 82
  • ErrorException: proc_open(): fork failed - Cannot allocate memory in phar

    ErrorException: proc_open(): fork failed - Cannot allocate memory in phar

    ErrorException: proc_open(): fork failed - Cannot allocate memory in phar:///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php on line 943

    Call Stack: 0.0523 765208 1. {main}() /var/www/workspace/MyProject/build/composer/composer.phar:0 0.0528 763216 2. require('phar:///var/www/workspace/MyProject/build/composer/composer.phar/bin/composer') /var/www/workspace/MyProject/build/composer/composer.phar:15 0.0830 3504584 3. Composer\Console\Application->run() phar:///var/www/workspace/MyProject/build/composer/composer.phar/bin/composer:13 0.0865 3865984 4. Symfony\Component\Console\Application->run() phar:///var/www/workspace/MyProject/build/composer/composer.phar/src/Composer/Console/Application.php:66 31.9725 246198552 5. Symfony\Component\Console\Application->renderException() phar:///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:113 31.9726 246199624 6. Symfony\Component\Console\Application->getTerminalWidth() phar:///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:771 31.9726 246199784 7. Symfony\Component\Console\Application->getSttyColumns() phar:///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:848 31.9727 246202984 8. proc_open() phar:///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:943 31.9728 246204736 9. Composer\Util\ErrorHandler::handle() phar:///var/www/workspace/MyProject/build/composer/composer.phar/src/Composer/Util/ErrorHandler.php:0

    Bug 
    opened by yooper 81
  • Fix annotation of CompletePackageInterface::getAuthors as it could return null

    Fix annotation of CompletePackageInterface::getAuthors as it could return null

    Hello there :slightly_smiling_face: :wave:

    in the ArrayLoader the authors are only set if the value is an array. If this is not the case or simply no authors are given in the composer.json, the $authors property stays null

    So the annotation on the interface for getAuthors is not correct.

    I guess this is also the case for other properties, but this just showed up for us, as we need to tell PHPStan, that getAuthors returns array|null Let me know, if I should also fix the other properties :slightly_smiling_face:

    opened by mitelg 0
  • Any way to get composer to stop deleting my work?

    Any way to get composer to stop deleting my work?

    This is my scenario (which has happened twice now in the past 2 weeks):

    • i am working on modifying someone's code which is part of a composer managed project
    • i have the work completed (hours of work)
    • i need to make a patch of this work but realize i have composer patched copy of the project i am working on
    • i remove the patch from my composer.json and run composer install

    yes, i realize (now) that was a stupid thing to do as it has just wiped out all of my work.

    Is there any option to have composer notify when it is about to delete uncommitted work (I realize this would need to tie in with git to do this) or simply backup files it is removing.

    I have written a bash function call to override "composer" to check if install/update were options and then do something: simply spit out "are you sure msg" or possibly just do a backup.. but the backup is slow as i don't know what is about to be wiped and need to backup entire project. If this was built in to composer it could be much more efficient as it knows what it is about to wipe.

    opened by liquidcms 3
  • The requested PHP extension ext-json ^1.6 has the wrong version (8.0.7) installed.

    The requested PHP extension ext-json ^1.6 has the wrong version (8.0.7) installed.

    My composer.json:

    {
        "require": {
            "ext-curl": "*",
            "ext-fileinfo": "*",
            "ext-pdo": "*",
            "ext-mbstring": "*",
            "ext-iconv": "*",
            "slim/slim": "4.*",
            "slim/psr7": "^1.3",
            "ext-json": "^1.6",
            "monolog/monolog": "^2.2",
            "php-di/php-di": "^6.3",
            "predis/predis": "^1.1",
            "topthink/think-validate": "^2.0",
            "aliyuncs/oss-sdk-php": "^2.4",
            "phpseclib/bcmath_compat": "^2.0"
        },
        "autoload": {
            "psr-4": {
                "App\\": "app/"
            }
        }
    }
    

    Output of composer diagnose:

    Checking composer.json: WARNING
    No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.
    Checking platform settings: OK
    Checking git settings: OK
    Checking http connectivity to packagist: OK
    Checking https connectivity to packagist: OK
    Checking github.com rate limit: OK
    Checking disk free space: OK
    Checking pubkeys:
    Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
    Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
    OK
    Checking composer version: You are not running the latest stable version, run `composer self-update` to update (2.1.2 => 2.1.3)
    Composer version: 2.1.2
    PHP version: 8.0.7
    PHP binary path: /usr/bin/php8.0
    OpenSSL version: OpenSSL 1.1.1d  10 Sep 2019
    cURL version: 7.64.0 libz 1.2.11 ssl OpenSSL/1.1.1d
    zip: extension present, unzip present
    

    When I run this command:

    composer install
    

    I get the following output:

      Problem 1
        - Root composer.json requires PHP extension ext-json ^1.6 but it has the wrong version (8.0.7) installed. Install or enable PHP's json extension.
    

    And I expected this to happen:

    Perform composer install normally.

    This is like issue #8342, except this time the version numbers flip sides: 8.0.7 is not suitable (too high?) for ^1.6.

    Fortunately this is our own project, so we can change to "ext-json": "*" and go on. But I think this is incorrect behavior, and should be mentioned here.

    opened by passerbyxp 2
  • No section on the https://getcomposer.org/

    No section on the https://getcomposer.org/ "Getting Started" page says anything about composer.json - should reference "Basic Usage" instead

    My composer.json:

    Herein lies the crux of the issue
    "There is no section on the https://getcomposer.org/ "Getting Started" page that says anything about "To initialize a project, please create a composer.json file"
    
    The first place the composer.json file is mentioned is under the "https://getcomposer.org/doc/01-basic-usage.md" Basic Usage section.  Can the error output of the command please reference the correct place to look?
    
    ~$ composer status
    Composer could not find a composer.json file in /home/web-deploy
    To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section
    
    

    Output of composer diagnose:

    $ composer diagnose
    Checking platform settings: OK
    Checking git settings: OK
    Checking http connectivity to packagist: OK
    Checking https connectivity to packagist: OK
    Checking github.com rate limit: OK
    Checking disk free space: OK
    Checking pubkeys: 
    Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
    Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
    OK
    Checking composer version: OK
    Composer version: 2.1.2
    PHP version: 7.3.27
    PHP binary path: /usr/bin/php7.3
    OpenSSL version: OpenSSL 1.1.1d  10 Sep 2019
    cURL version: 7.64.0 libz 1.2.11 ssl OpenSSL/1.1.1d
    zip: extension present, unzip present
    

    When I run this command:

    ...replace me...
    

    I get the following output:

    ...replace me...
    

    And I expected this to happen:

    opened by nodenineinc 2
  • Expose composer package version

    Expose composer package version

    See #9963

    opened by lstrojny 0
  • Increase PHPStan level

    Increase PHPStan level

    Need to see what level is reasonable given 5.3 support, but would be good to do before forking the codebase long term for higher php version support.

    Also add https://github.com/phpstan/phpstan-deprecation-rules

    Refactoring 
    opened by Seldaek 1
  • Add `composer` platform package

    Add `composer` platform package

    This should track the composer version, and allow packages to require or conflict with specific composer versions, independently of the composer-runtime-api and composer-plugin-api versioning.

    Also needs very good and clear documentation to avoid confusing the hell out of people with all these platform packages.

    /cc @lstrojny

    Feature 
    opened by Seldaek 1
  • Avoid reinitializing plugins with a class copy if not necessary

    Avoid reinitializing plugins with a class copy if not necessary

    Refs https://github.com/composer/composer/issues/9952#issuecomment-856515012

    Whereas a composer require does:

    [...]
    Loading plugin Composer\Installers\Plugin (from composer/installers)
    Loading plugin cweagans\Composer\Patches (from cweagans/composer-patches)
    Loading plugin DrupalComposer\PreservePaths\Plugin (from drupal-composer/preserve-paths)
    [...]
    Using version ^3.18 for drupal/redis
    ./composer.json has been updated
    [...]
    Loading plugin Composer\Installers\Plugin_composer_tmp0 (from composer/installers)
    Loading plugin cweagans\Composer\Patches_composer_tmp1 (from cweagans/composer-patches)
    Loading plugin DrupalComposer\PreservePaths\Plugin_composer_tmp2 (from drupal-composer/preserve-paths)
    [...]
    

    The second batch of plugin loading there could perhaps see the class hasn't changed and avoid creating a new temporary class. Not sure if worth the trouble of checking file hashes etc for the little gain of optimizing this away though.

    Refactoring 
    opened by Seldaek 2
  • Downgrade / upgrade of dependencies with phpstan

    Downgrade / upgrade of dependencies with phpstan

    As a Laravel user I recently had to experience that when I update dependencies that contain phpstan I always get psr/cache version 1. However, if I update the Laravel framework I always get version 2 of psr/cache and if I update dependencies with phpstan again it jumps back to version 1. This behavior bothers me in the meantime and therefore I am looking for a solution.

    My composer.json:

    {
        "name": "laravel/laravel",
        "type": "project",
        "description": "The Laravel Framework.",
        "license": "MIT",
        "require": {
            "php": "^8.0",
            "fideloper/proxy": "^4.4.1",
            "fruitcake/laravel-cors": "^2.0.4",
            "guzzlehttp/guzzle": "^7.3.0",
            "laravel/framework": "^8.45.1",
            "laravel/socialite": "^5.2",
            "laravel/tinker": "^2.6.1",
            "socialiteproviders/twitch": "^5.3"
        },
        "require-dev": {
            "barryvdh/laravel-ide-helper": "^2.10",
            "facade/ignition": "^2.10.1",
            "fakerphp/faker": "^1.14.1",
            "laravel/telescope": "^4.4.10",
            "mockery/mockery": "^1.4.3",
            "nunomaduro/collision": "^5.4.0",
            "nunomaduro/larastan": "^0.7.6",
            "nunomaduro/phpinsights": "dev-master",
            "phpunit/phpunit": "^9.5.5"
        },
        "autoload": {
            "psr-4": {
                "App\\": "app/",
                "Database\\Factories\\": "database/factories/",
                "Database\\Seeders\\": "database/seeders/"
            }
        },
        "autoload-dev": {
            "psr-4": {
                "Tests\\": "tests/"
            }
        },
        "scripts": {
            "post-autoload-dump": [
                "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
                "@php artisan package:discover --ansi"
            ],
            "post-root-package-install": [
                "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
            ],
            "post-create-project-cmd": [
                "@php artisan key:generate --ansi"
            ]
        },
        "extra": {
            "laravel": {
                "dont-discover": []
            }
        },
        "config": {
            "optimize-autoloader": true,
            "preferred-install": "dist",
            "sort-packages": true
        },
        "minimum-stability": "dev",
        "prefer-stable": true
    }
    
    

    Output of composer diagnose:

    Checking composer.json: OK
    Checking platform settings: OK
    Checking git settings: OK
    Checking http connectivity to packagist: OK
    Checking https connectivity to packagist: OK
    Checking github.com rate limit: OK
    Checking disk free space: OK
    Checking pubkeys:
    Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
    Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
    OK
    Checking composer version: OK
    Composer version: 2.1.2
    PHP version: 8.0.5
    PHP binary path: /usr/bin/php8.0
    OpenSSL version: OpenSSL 1.1.1f  31 Mar 2020
    cURL version: 7.68.0 libz 1.2.11 ssl OpenSSL/1.1.1f
    zip: extension present, unzip present
    

    I get the following output:

    phpstan/phpstan#5146

    And I expected this to happen:

    Dependencies should stay in the latest version and not downgrade if it is not required.

    Support 
    opened by paddockDev 3
  • Support 7-zip on non-Windows platforms

    Support 7-zip on non-Windows platforms

    Given that support for 7-zip on Windows was recently added, I thought it would be good to also support this on other platforms in the not so distant future. The latest alpha version, 21.02, of 7-zip has added official support for linux and macos along with arm64 variants. As explained in the text below, it seems that the official executable will have the 7zz name.

    https://www.7-zip.org/history.txt https://sourceforge.net/p/sevenzip/discussion/45797/thread/7fe6c21efa/

    Taken from the readme of the pre-compiled linux binary:

    7-Zip and p7zip

    Now there are two different ports of 7-Zip for Linux/macOS:

    1. p7zip - another port of 7-Zip for Linux, made by an independent developer. The latest version of p7zip now is 16.02, and that p7zip 16.02 is outdated now.

    2. 7-Zip for Linux/macOS - this package - it's new code with all changes from latest 7-Zip for Windows.

    These two ports are not identical. Note also that some Linux specific things can be implemented better in p7zip than in new 7-Zip for Linux.

    There are several main executables in 7-Zip and p7zip:

    7zz (7-Zip) - standalone full version of 7-Zip that supports all formats. 
    
    7z  (p7zip) - 7-Zip that requires 7z.so shared library, and it supports all formats via 7z.so.
    
    7zr (p7zip) - standalone reduced version of 7-Zip that supports some 7-Zip's formats:
                  7z, xz, lzma and split.
    
    7za (p7zip) - standalone version of 7-Zip that supports some main formats: 
                  7z, xz, lzma, zip, bzip2, gzip, tar, cab, ppmd and split.
    

    The command line syntax for executables from p7zip is similar to 7zz syntax from this package.

    The manual of 7-Zip and p7zip can show 7z in command examples. But you can use 7zz, 7zr, 7za instead of 7z from examples.

    Feature 
    opened by TRowbotham 0
Releases(2.1.3)
  • 2.1.3(Jun 9, 2021)

  • 2.1.2(Jun 7, 2021)

    • Added --dev to dump-autoload command to allow force-dumping dev autoload rules even if dev requirements are not present (#9946)
    • Fixed --no-scripts disabling events for plugins too instead of only disabling script handlers, using --no-plugins is the way to disable plugins (#9942)
    • Fixed handling of deletions during package installs on some filesystems (#9945, #9947)
    • Fixed undefined array access when using @php <absolute path> in a script handler (#9943)
    • Fixed usage of InstalledVersions when loaded from composer/composer installed as a dependency and runtime Composer is v1 (#9937)
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.14 MB)
    composer.phar.asc(589 bytes)
  • 2.1.1(Jun 4, 2021)

  • 2.1.0(Jun 3, 2021)

    • Bumped composer-runtime-api and composer-plugin-api to 2.1.0
    • UX Change: The default install method for packages is now always dist/zip, even for dev packages, added --prefer-install=auto if you want the old behavior (#9603)
    • UX Change: Packages from path repositories which are symlinked in the vendor dir will always be updated in partial updates to avoid mistakes when the original composer.json changes but the symlinked package is not explicitly updated (#9765)
    • Added reinstall command that takes one or more package names, including wildcard (*) support, and removes then reinstalls them in the exact same version they had (#9915)
    • Added support for parallel package installs on Windows via 7-Zip if it is installed (#9875)
    • Added detection of invalid composer.lock files that do not fullfil the composer.json requirements to validate command (#9899)
    • Added InstalledVersions::getInstalledPackagesByType(string $type) to retrieve installed plugins for example, read more (#9699)
    • Added InstalledVersions::getInstalledPath(string $packageName) to retrieve the install path of a given package, read more (#9699)
    • Added flag to InstalledVersions::isInstalled() to allow excluding dev requirements from that check (#9682)
    • Added support for PHP 8.1 enums in autoloader / classmap generation (#9670)
    • Added support for using @php binary-name foo in scripts to refer to a binary without using its full path, but forcing to use the same PHP version as Composer used (#9726)
    • Added --format=json support to the fund command (#9678)
    • Added --format=json support to the search command (#9747)
    • Added COMPOSER_DEV_MODE env var definition within the run-script command for compatibility (#9793)
    • Added async uninstall of packages (#9618)
    • Added color legend to outdated and show --latest commands (#9716)
    • Added secure-svn-domains config option to mark secure svn:// hostnames and suppress warnings without disabling secure-http (#9872)
    • Added gitlab-protocol config option to allow forcing git or http URLs for all gitlab repos loaded inline, instead of the default of git for private and http for public (#9401)
    • Added generation of autoload rules in init command (#9829)
    • Added source/dist validation in validate command
    • Added automatic detection of WSL when generating binaries and use bin-compat:full implicitly (#9855)
    • Added automatic detection of the --no-dev state for dump-autoload based on the last install run (#9714)
    • Added warning/prompt to require command if requiring a package that already exists in require-dev or vice versa (#9542)
    • Added information about package conflicts in the why/why-not commands (#9693)
    • Removed version argument from why command as it was not needed (#9729)
    • Fixed why-not command to always require a specific version as it is useless without (#9729)
    • Fixed cache dir on macOS to follow OS guidelines, it is now in ~/Library/Caches/composer (#9898)
    • Fixed composer.json JSON schema to avoid having name/description required by default (#9912)
    • Fixed support for running inside WSL paths from a Windows PHP/Composer (#9861)
    • Fixed InstalledVersions to include the original doc blocks when installed from a Composer phar file
    • Fixed require command to use * as constraint for extensions bundled with PHP instead of duplicating the PHP constraint (#9483)
    • Fixed search output to be aligned and avoid wrapped long lines to be more readable (#9455)
    • Fixed PHP 8.1 deprecation warning (#9932)
    • Fixed env var handling when variables_order includes E and symfony/console 3.3.15+ is in use (#9930)
    • Error output improvements for many cases (#9876, #9837, #9928, and some smaller improvements)
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.16 MB)
    composer.phar.asc(589 bytes)
  • 2.1.0-RC1(Jun 2, 2021)

    Try it out now and get ready for the upcoming stable release

    • Use composer self-update --preview to try the latest prerelease version.
    • Use composer self-update --stable to go back to stable releases.

    Changelog

    • Bumped composer-runtime-api and composer-plugin-api to 2.1.0
    • UX Change: The default install method for packages is now always dist/zip, even for dev packages, added --prefer-install=auto if you want the old behavior (#9603)
    • UX Change: Packages from path repositories which are symlinked in the vendor dir will always be updated in partial updates to avoid mistakes when the original composer.json changes but the symlinked package is not explicitly updated (#9765)
    • Added reinstall command that takes one or more package names, including wildcard (*) support, and removes then reinstalls them in the exact same version they had (#9915)
    • Added support for parallel package installs on Windows via 7-Zip if it is installed (#9875)
    • Added detection of invalid composer.lock files that do not fullfil the composer.json requirements to validate command (#9899)
    • Added InstalledVersions::getInstalledPackagesByType(string $type) to retrieve installed plugins for example, read more (#9699)
    • Added InstalledVersions::getInstalledPath(string $packageName) to retrieve the install path of a given package, read more (#9699)
    • Added flag to InstalledVersions::isInstalled() to allow excluding dev requirements from that check (#9682)
    • Added support for PHP 8.1 enums in autoloader / classmap generation (#9670)
    • Added support for using @php binary-name foo in scripts to refer to a binary without using its full path, but forcing to use the same PHP version as Composer used (#9726)
    • Added --format=json support to the fund command (#9678)
    • Added --format=json support to the search command (#9747)
    • Added COMPOSER_DEV_MODE env var definition within the run-script command for compatibility (#9793)
    • Added async uninstall of packages (#9618)
    • Added color legend to outdated and show --latest commands (#9716)
    • Added secure-svn-domains config option to mark secure svn:// hostnames and suppress warnings without disabling secure-http (#9872)
    • Added gitlab-protocol config option to allow forcing git or http URLs for all gitlab repos loaded inline, instead of the default of git for private and http for public (#9401)
    • Added generation of autoload rules in init command (#9829)
    • Added source/dist validation in validate command
    • Added automatic detection of WSL when generating binaries and use bin-compat:full implicitly (#9855)
    • Added automatic detection of the --no-dev state for dump-autoload based on the last install run (#9714)
    • Added warning/prompt to require command if requiring a package that already exists in require-dev or vice versa (#9542)
    • Added information about package conflicts in the why/why-not commands (#9693)
    • Removed version argument from why command as it was not needed (#9729)
    • Fixed why-not command to always require a specific version as it is useless without (#9729)
    • Fixed cache dir on macOS to follow OS guidelines, it is now in ~/Library/Caches/composer (#9898)
    • Fixed composer.json JSON schema to avoid having name/description required by default (#9912)
    • Fixed support for running inside WSL paths from a Windows PHP/Composer (#9861)
    • Fixed InstalledVersions to include the original doc blocks when installed from a Composer phar file
    • Fixed require command to use * as constraint for extensions bundled with PHP instead of duplicating the PHP constraint (#9483)
    • Fixed search output to be aligned and avoid wrapped long lines to be more readable (#9455)
    • Error output improvements for many cases (#9876, #9837, #9928, and some smaller improvements)
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.16 MB)
    composer.phar.asc(589 bytes)
  • 2.0.14(May 21, 2021)

    • Updated composer/xdebug-handler to 2.0 which adds supports for Xdebug 3
    • Fixed handling of inline-update-constraints with references or stability flags (#9847)
    • Fixed async processes erroring in an unclear way when they failed to start (#9808)
    • Fixed support for the upcoming Symfony 6.0 release when Composer is installed as a library (#9896)
    • Fixed progress output missing newlines on PowerShell, and disable progress output by default when CI env var is present (#9621)
    • Fixed support for Vagrant/VirtualBox filesystem slowness when installing binaries from packages (#9627)
    • Fixed type annotations for the InstalledVersions class
    • Deprecated InstalledVersions::getRawData in favor of InstalledVersions::getAllRawData (#9816)
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.11 MB)
    composer.phar.asc(589 bytes)
  • 2.0.13(Apr 27, 2021)

    • Security: Fixed command injection vulnerability in HgDriver/HgDownloader and hardened other VCS drivers and downloaders (GHSA-h5h8-pc6h-jvvx / CVE-2021-29472)
    • Fixed install step at the end of the init command to take new dependencies into account correctly
    • Fixed update --lock listing updates which were not really happening (#9812)
    • Fixed support for --no-dev combined with --locked in outdated and show commands (#9788)
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.11 MB)
    composer.phar.asc(589 bytes)
  • 1.10.22(Apr 27, 2021)

  • 1.10.21(Apr 1, 2021)

  • 2.0.12(Apr 1, 2021)

    • Fixed support for new GitHub OAuth token format (#9757)
    • Fixed support for Vagrant/VirtualBox filesystem slowness by adding short sleeps in some places (#9627)
    • Fixed unclear error reporting when a package is in the lock file but not in the remote repositories (#9750)
    • Fixed processes silently ignoring the CWD when it does not exist
    • Fixed new Windows bin handling to avoid proxying phar files (#9742)
    • Fixed issue extracting archives into paths that already exist, fixing problems with some custom installers (composer/installers#479)
    • Fixed support for branch names starting with master/trunk/default (#9739)
    • Fixed self-update to preserve phar file permissions on Windows (#9733)
    • Fixed detection of hg version when localized (#9753)
    • Fixed git execution failures to also include the stdout output (#9720)
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.11 MB)
    composer.phar.asc(589 bytes)
  • 2.0.11(Feb 24, 2021)

  • 2.0.10(Feb 23, 2021)

    • Added COMPOSER_MAX_PARALLEL_HTTP env var to let people set a lower amount of parallel requests if needed
    • Fixed autoloader registration when plugins are loaded, which may impact plugins relying on this bug (if you use symfony/flex make sure you upgrade it to 1.12.2+ to fix dump-env issues)
    • Fixed exec command suppressing output in some circumstances
    • Fixed Windows/cmd.exe support for script handlers defined as path/to/foo, which are now rewritten internally to path\to\foo when needed
    • Fixed bin handling on Windows for PHP scripts, to more closely match symlinks and allow @php vendor/bin/foo to work cross-platform
    • Fixed Git for Windows/Git Bash not being detected correctly as an interactive shell (regression since 2.0.7)
    • Fixed regression handling some private Bitbucket repository clones
    • Fixed Ctrl-C/SIGINT handling during downloads to correctly abort as soon as possible
    • Fixed runtime autoloader registration (for plugins and script handlers) to prefer the project dependencies over the bundled Composer ones
    • Fixed numeric default branches being aliased as 9999999-dev internally. This alias now only applies to default branches being non-numeric (e.g. dev-main)
    • Fixed support for older lib-sodium versions
    • Fixed various minor issues
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.10 MB)
    composer.phar.asc(589 bytes)
  • 2.0.9(Jan 27, 2021)

    • Added warning if the curl extension is not enabled as it significantly degrades performance
    • Fixed InstalledVersions to report all packages when several vendor dirs are present in the same runtime
    • Fixed download speed when downloading large files
    • Fixed archive and path repo copies mishandling some .gitignore paths
    • Fixed root package classes not being available to the plugins/scripts during the initial install
    • Fixed cache writes to be atomic and better support multiple Composer processes running in parallel
    • Fixed preg jit issues when config or require modifies large composer.json files
    • Fixed compatibility with envs having open_basedir restrictions
    • Fixed exclude-from-classmap causing regex issues when having too many paths
    • Fixed compatibility issue with Symfony 4/5
    • Several small performance and debug output improvements
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.10 MB)
    composer.phar.asc(589 bytes)
  • 1.10.20(Jan 27, 2021)

  • 1.10.19(Dec 4, 2020)

  • 2.0.8(Dec 3, 2020)

    • Fixed packages with aliases not matching conflicts which match the alias
    • Fixed invalid reports of uncommitted changes when using non-default remotes in vendor dir
    • Fixed curl error handling edge cases
    • Fixed cached git repositories becoming stale by having a git gc applied to them periodically
    • Fixed issue initializing plugins when using dev packages
    • Fixed update --lock / mirrors failing to update in some edge cases
    • Fixed partial update with --with-dependencies failing in some edge cases with some nonsensical error
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.09 MB)
    composer.phar.asc(589 bytes)
  • 1.10.18(Dec 3, 2020)

  • 2.0.7(Nov 13, 2020)

    • Fixed detection of TTY mode, made input non-interactive automatically if STDIN is not a TTY
    • Fixed root aliases not being present in lock file if not required by anything else
    • Fixed remove command requiring a lock file to be present
    • Fixed Composer\InstalledVersions to always contain up to date data during installation
    • Fixed status command breaking on slow networks
    • Fixed order of POST_PACKAGE_* events to occur together once all installations of a package batch are done
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.09 MB)
    composer.phar.asc(589 bytes)
  • 2.0.6(Nov 7, 2020)

  • 2.0.5(Nov 6, 2020)

    • Disabled platform-check verification of extensions by default (now defaulting php-only), set platform-check to true if you want a complete check
    • Improved platform-check handling of issue reporting
    • Fixed platform-check to only check non-dev requires even if require-dev dependencies are installed
    • Fixed issues dealing with custom installers which return trailing slashes in getInstallPath (ideally avoid doing this as there might be other issues left)
    • Fixed issues when curl functions are disabled
    • Fixed gitlab-domains/github-domains to make sure if they are overridden the default value remains present
    • Fixed issues removing/upgrading packages from path repositories on Windows
    • Fixed regression in 2.0.4 when handling of [email protected] URLs in vcs repositories
    • Fixed issue running create-project in current directory on Windows
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.09 MB)
    composer.phar.asc(589 bytes)
  • 2.0.4(Oct 30, 2020)

    • Fixed check-platform-req command not being clear on what packages are checked, and added a --lock flag to explicitly check the locked packages
    • Fixed config & create-project adding of repositories to make sure they are prepended as order is much more important in Composer 2, also added a --append flag to config to restore the old behavior in the unlikely case this is needed
    • Fixed curl downloader failing on old PHP releases or when using self-signed SSL certificates
    • Fixed Bitbucket API authentication issue
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.07 MB)
    composer.phar.asc(589 bytes)
  • 1.10.17(Oct 30, 2020)

  • 2.0.3(Oct 28, 2020)

    • Fixed bug in outdated command where dev packages with branch-aliases where always shown as being outdated
    • Fixed issue in lock file interoperability with composer 1.x when using dev-master as xxx aliases
    • Fixed new --locked option being missing from outdated command, for checking outdated packages directly from the lock file
    • Fixed a few debug/error reporting strings
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.07 MB)
    composer.phar.asc(589 bytes)
  • 2.0.2(Oct 25, 2020)

    • Fixed regression handling composer show -s in projects where no version can be guessed from VCS
    • Fixed regression handling partial updates/require when a lock file was missing
    • Fixed interop issue with plugins that need to update dist URLs of packages, see docs if you need this
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.07 MB)
  • 2.0.1(Oct 24, 2020)

  • 2.0.0(Oct 24, 2020)

    Read the Composer 2.0 announcement first for the highlights!

    Complete 2.0 Changelog

    • Breaking: This is a major release and while we tried to keep things compatible for most users, you might want to have a look at the UPGRADE guides
    • Many CPU and memory performance improvements
    • The update command is now much more deterministic as it does not take the already installed packages into account
    • Package installation now performs all network operations first before doing any changes on disk, to reduce the chances of ending up with a partially updated vendor dir
    • Partial updates and require/remove are now much faster as they only load the metadata required for the updated packages
    • Added a platform-check step when vendor/autoload.php gets initialized which checks the current PHP version/extensions match what is expected and fails hard otherwise. Can be disabled with the platform-check config option
    • Added a Composer\InstalledVersions class which is autoloaded in every project and lets you check which packages/versions are present at runtime
    • Added a composer-runtime-api virtual package which you can require (as e.g. ^2.0) to ensure things like the InstalledVersions class above are present. It will effectively force people to use Composer 2.x to install your project
    • Added support for parallel downloads of package metadata and zip files, this requires that the curl extension is present and we thus strongly recommend enabling curl
    • Added parallel installation of packages (requires OSX/Linux/WSL, and that unzip is present in PATH)
    • Added much clearer dependency resolution error reporting for common error cases
    • Added support for updating to a specific version with partial updates, as well as a --with flag to pass in temporary constraint overrides
    • Added automatic removal of packages which are not required anymore whenever an update is done, this will purge packages previously left over by partial updates and require/remove
    • Added support for TTY mode on Linux/OSX/WSL so that script handlers now run in interactive mode
    • Added only, exclude and canonical options to all repositories, see repository priorities for details
    • Added support for many new lib-* packages in the platform repository and improved version detection for some ext-* and lib-* packages
    • Added pre-operations-exec event to be fired before the packages get installed/upgraded/removed
    • Added pre-pool-create event to be fired before the package pool for the dependency solver is created, which lets you modify the list of packages going in
    • Added post-file-download event to be fired after package dist files are downloaded, which lets you do additional checks on the files
    • Added --locked flag to show command to see the packages from the composer.lock file
    • Added --unused flag to remove command to make sure any packages which are not needed anymore get removed
    • Added --dry-run flag to require and remove commands
    • Added --no-install flag to update, require and remove commands to disable the install step and only do the update step (composer.lock file update)
    • Added an --ask flag to create-project command to make Composer prompt for the install dir name, useful for project install instructions
    • Added support for multiple --repository flags being passed into the create-project command, only useful in combination with --add-repository to persist them to composer.json
    • Added --with-dependencies and --with-all-dependencies flag aliases to require and remove commands for consistency with update
    • Added shorthand aliases -w for --with-dependencies and -W for --with-all-dependencies on update/require/remove commands
    • Added more info to vendor/composer/installed.json, a dev key stores whether dev requirements were installed, and every package now has an install-path key with its install location
    • Added COMPOSER_DISABLE_NETWORK which if set makes Composer do its best to run offline. This can be useful when you have poor connectivity or to do benchmarking without network jitter
    • Added COMPOSER_DEBUG_EVENTS=1 env var support for plugin authors to figure out which events are triggered when
    • Added setCustomCacheKey to PreFileDownloadEvent and fixed a cache bug for integrations changing the processed url of package archives
    • Added Composer\Util\SyncHelper for plugin authors to deal with async Promises more easily
    • Added $composer->getLoop()->getHttpDownloader() to get access to the main HttpDownloader instance in plugins
    • Added --json and --merge flags to config command to allow editing complex extra.* values by using json as input
    • Added confirmation prompt when running Composer as superuser in interactive mode
    • Added --no-check-version to validate command to remove the warning in case the version is defined
    • Added --ignore-platform-req (without s) to all commands supporting --ignore-platform-reqs, which accepts a package name so you can ignore only specific platform requirements
    • Added --no-dev support to show and outdated commands to skip dev requirements
    • Added --format=summary flag to license command
    • Added a cache-read-only config option to make the cache usable in read only mode for containers and such
    • Added support for wildcards (*) in classmap autoloader paths
    • Added support for configuring GitLab deploy tokens in addition to private tokens, see gitlab-token
    • Added support for package version guessing for require and init command to take all platform packages into account, not just php version
    • Added support for tar in artifact repositories
    • Added a non-zero exit code (2) and warning to remove command when a package to be removed could not be removed
    • Added --apcu-autoloader-prefix (or --apcu-prefix for dump-autoload command) flag to let people use apcu autoloading in a deterministic output way if that is needed
    • Fixed package ordering when autoloading and especially when loading plugins, to make sure dependencies are loaded before their dependents
    • Fixed suggest output being very spammy, it now is only one line long and shows more rarely
    • Fixed conflict rules like e.g. >=5 from matching dev-master, as it is not normalized to 9999999-dev internally anymore
    • Fixed solver bug resulting in endless loops in some cases
    • Lots of minor bug fixes and improvements
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.07 MB)
  • 1.10.16(Oct 24, 2020)

  • 2.0.0-RC2(Oct 14, 2020)

    Not up to date with Composer 2 yet? Check the alpha1 changelog and alpha2 changelog, alpha3 changelog and RC1 changelog and especially the UPGRADE guide first.

    Try it out now and get ready for the upcoming stable release

    • Use composer self-update --preview to try the latest RC version (2.x).
    • Use composer self-update --snapshot to try the latest dev build (2.x).
    • Use composer self-update --stable to go back to stable releases (1.x for now).
    • Use composer self-update --1 in CI/scripts if you want to pin Composer to 1.x until you are ready to migrate, this will ensure you stay on 1.x releases even once a 2.0 stable comes out.

    Future timeline

    Between RC1 and RC2 we only had to do a few fixes and mostly added a couple things to help plugin authors do their job more easily. This means 2.0 is already quite stable and we see it used in the wild quite a bit. The current plan is to release a 2.0 final before end of October. It is almost 100% compatible with Composer 1 with the exception of plugins, so please do try it ASAP and report any regression you find. The lock files from v1 can be used by v2 and vice-versa, so don't worry about that.

    Changelog

    • Breaking: Removed OperationInterface::getReason as the data was not accurate
    • Added automatic removal of packages which are not required anymore whenever an update is done, this will purge packages previously left over by partial updates and require/remove
    • Added shorthand aliases -w for --with-dependencies and -W for --with-all-dependencies on update/require/remove commands
    • Added COMPOSER_DEBUG_EVENTS=1 env var support for plugin authors to figure out which events are triggered when
    • Added setCustomCacheKey to PreFileDownloadEvent and fixed a cache bug for integrations changing the processed url of package archives
    • Added Composer\Util\SyncHelper for plugin authors to deal with async Promises more easily
    • Added $composer->getLoop()->getHttpDownloader() to get access to the main HttpDownloader instance in plugins
    • Added a non-zero exit code (2) and warning to remove command when a package to be removed could not be removed
    • Added --apcu-autoloader-prefix (or --apcu-prefix for dump-autoload command) flag to let people use apcu autoloading in a deterministic output way if that is needed
    • Fixed version guesser to look at remote branches as well as local ones
    • Lots of minor bug fixes and improvements
    Source code(tar.gz)
    Source code(zip)
    composer.phar(2.06 MB)
  • 1.10.15(Oct 13, 2020)

  • 1.10.14(Oct 13, 2020)

    • Fixed version guesser to look at remote branches as well as local ones
    • Fixed path repositories version guessing to handle edge cases where version is different from the VCS-guessed version
    • Fixed COMPOSER env var causing issues when combined with the global command
    • Fixed a few issues dealing with PHP without openssl extension (not recommended at all but sometimes needed for testing)
    Source code(tar.gz)
    Source code(zip)
    composer.phar(1.90 MB)
IoC Dependency Injector

auryn auryn is a recursive dependency injector. Use auryn to bootstrap and wire together S.O.L.I.D., object-oriented PHP applications. How It Works Am

Daniel Lowrey 710 Apr 15, 2021
💎 Flexible, compiled and full-featured Dependency Injection Container with perfectly usable autowiring and support for all new PHP 7 features.

Nette Dependency Injection (DI) Introduction Purpose of the Dependecy Injection (DI) is to free classes from the responsibility for obtaining objects

Nette Foundation 675 Jun 10, 2021
Adapters for PHP framework containers to an interoperable interface

Acclimate - Container Adapters Get Acclimated! Use any third-party dependency injection containers and service locators in your code by adapting them

Acclimate Container 217 Apr 30, 2021
Dependency Manager for PHP

Composer - Dependency Management for PHP Composer helps you declare, manage, and install dependencies of PHP projects. See https://getcomposer.org/ fo

Composer 25.3k Jun 16, 2021
PSR-11 compatible Dependency Injection Container for PHP.

bitexpert/disco This package provides a PSR-11 compatible, annotation-based dependency injection container. Have a look at the disco-demos project to

bitExpert AG 135 Mar 14, 2021
A small PHP dependency injection container

Pimple Caution! Pimple is now closed for changes. No new features will be added and no cosmetic changes will be accepted either. The only accepted cha

Silex 2.4k Jun 14, 2021
Small but powerful dependency injection container

Container (Dependency Injection) This package is compliant with PSR-1, PSR-2, PSR-4 and PSR-11. If you notice compliance oversights, please send a pat

The League of Extraordinary Packages 690 Jun 15, 2021
Dependency Injection System

Aura.Di A serializable dependency injection container with constructor and setter injection, interface and trait awareness, configuration inheritance,

Aura for PHP 323 Jun 14, 2021
🚀 PHP Service Container with fast and cachable dependency injection.

ClanCats Container A PHP Service Container featuring a simple meta-language with fast and compilable dependency injection. Requires PHP >= 7.0 Pros: M

ClanCats 28 May 6, 2021
The dependency injection container for humans

layout home PHP-DI is a dependency injection container meant to be practical, powerful, and framework-agnostic. Read more on the website: php-di.org G

null 2.2k Jun 14, 2021
The DependencyInjection component allows you to standardize and centralize the way objects are constructed in your application.

DependencyInjection Component The DependencyInjection component allows you to standardize and centralize the way objects are constructed in your appli

Symfony 3.4k Jun 12, 2021