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

71 lines
1.7 KiB
Markdown
Raw Normal View History

2012-01-24 17:08:41 +00:00
# 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:
```json
{
"extra": {
"triggers": {
"MyVendor\MyPackage\MyClass::myStaticMethod" : "post_install",
"MyVendor\MyPackage\MyClass::myStaticMethod2" : "post_update",
}
},
"autoload": {
"psr-0": {
"MyVendor\MyPackage": ""
}
}
}
```
For any given project:
```json
{
"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.