Composer post-package-(un)install scripts for modules and components.
Clone or download
Permalink
Failed to load latest commit information.
docs
src Merge pull request #53 from webimpress/improvement/import-internals Mar 21, 2018
test Merge pull request #53 from webimpress/improvement/import-internals Mar 21, 2018
.coveralls.yml add coveralls config May 31, 2016
.docheader
.gitattributes
.gitignore Updated .gitignore Nov 1, 2017
.travis.yml
.zf-mkdoc-theme-landing Updates documentation landing page May 22, 2018
CHANGELOG.md Bumped version Mar 21, 2018
LICENSE.md Update copyright date Feb 8, 2018
README.md Adds documentation for #52 Feb 8, 2018
composer.json Updates branch aliases Feb 8, 2018
composer.lock Updates branch aliases Feb 8, 2018
mkdocs.yml Updates documentation landing page May 22, 2018
phpcs.xml add/update phpcs.xml Nov 13, 2016
phpunit.xml.dist

README.md

Component Installer for Zend Framework 3 Applications

Build Status Coverage Status

This repository contains the Composer plugin class Zend\ComponentInstaller\ComponentInstaller, which provides Composer event hooks for the events:

  • post-package-install
  • post-package-uninstall

Via Composer global install

To install the utility for use with all projects you use:

$ composer global require zendframework/zend-component-installer

Per project installation

To install the utility for use with a specific project already managed by composer:

$ composer require zendframework/zend-component-installer

Writing packages that utilize the installer

Packages can opt-in to the workflow from zend-component-installer by defining one or more of the following keys under the extra.zf configuration in their composer.json file:

"extra": {
  "zf": {
    "component": "Component\\Namespace",
    "config-provider": "Classname\\For\\ConfigProvider",
    "module": "Module\\Namespace"
  }
}
  • A component is for use specifically with zend-mvc + zend-modulemanager; a Module class must be present in the namespace associated with it. The setting indicates a low-level component that should be injected to the top of the modules list of one of:

    • config/application.config.php
    • config/modules.config.php
    • config/development.config.php
  • A module is for use specifically with zend-mvc + zend-modulemanager; a Module class must be present in the namespace associated with it. The setting indicates a userland or third-party module that should be injected to the bottom of the modules list of one of:

    • config/application.config.php
    • config/modules.config.php
    • config/development.config.php
  • A config-provider is for use with applications that utilize expressive-config-manager or zend-config-aggregator (which may or may not be Expressive applications). The class listed must be an invokable that returns an array of configuration, and will be injected at the top of:

    • config/config.php

Whitelisting packages to install automatically

At the project level, you can mark packages that expose configuration providers and modules that you want to automatically inject via the component-whitelist key:

"extra": {
  "zf": {
    "component-whitelist": [
      "zendframework/zend-expressive",
      "zendframework/zend-expressive-helpers"
    ]
  }
}

This configuration must be made at the root package level (the package consuming configuration providing packages).