1
0
Fork 0
composer/doc/faqs/triggers.md

1.7 KiB

Triggers

What is a trigger?

A trigger is an event that runs a script in a static method, defined by a package or project. This event is raised before and after each action (install, update).

Where are the event types defined?

It is in the constant property in Composer\Trigger\TriggerEvents class.

How is it defined?

It is defined by adding the triggers key in the extra key to a project's composer.json or package's composer.json.

It is specified as an associative array of classes with her static method, associated with the event's type.

The PSR-0 must be defined, otherwise the trigger will not be triggered.

For any given package:

{
    "extra": {
        "triggers": {
            "MyVendor\MyPackage\MyClass::myStaticMethod" : "post_install",
            "MyVendor\MyPackage\MyClass::myStaticMethod2" : "post_update",
        }
    },
    "autoload": {
        "psr-0": {
            "MyVendor\MyPackage": ""
        }
    }
}

For any given project:

{
    "extra": {
        "triggers": {
            "MyVendor\MyPackage2\MyClass2::myStaticMethod2" : "post_install",
            "MyVendor\MyPackage2\MyClass2::myStaticMethod3" : "post_update",
        }
    },
    "autoload": {
        "psr-0": {
            "MyVendor\MyPackage": "my/folder/path/that/contains/triggers/from/the/root/project"
        }
    }
}

Informations:

The project's triggers are executed after the package's triggers. A declared trigger with non existent file will be ignored.

For example: If you declare a trigger for a package pre install, as this trigger isn't downloaded yet, it won't run.

On the other hand, if you declare a pre-update package trigger, as the file already exist, the actual vendor's version of the trigger will be run.