events.xml
events.xml registers package event listeners.
Use it when a package should react to framework events or extension points provided by other packages.
Basic Structure
Create events.xml in the package root.
<?xml version="1.0" encoding="UTF-8"?>
<events>
<event on="eventName" fire="\Vendor\Package\EventHandler::method"/>
</events>The on attribute contains the event name. The fire attribute contains the static PHP method that should be called.
Listener Classes
Event listener methods are usually grouped in an event class.
<?php
namespace Vendor\Package;
class Events
{
public static function onSiteSave($Site): void
{
// React to the event.
}
}The listener method signature must match the event that is fired.
Priority
Use priority only when the order between listeners matters.
<event on="eventName"
fire="\Vendor\Package\Events::method"
priority="20"
/>If no priority is set, QUIQQER uses the default priority.
Multiple Listeners
A package can register several listeners.
<events>
<event on="onSiteSave" fire="\QUI\Bricks\Events::onSiteSave"/>
<event on="onSmartyInit" fire="\QUI\Bricks\Events::onSmartyInit"/>
<event on="onPackageSetup" fire="\QUI\Bricks\Events::onPackageSetup"/>
</events>Keep listener methods focused. Return early when the listener does not apply to the current context.
Import Rules
When events.xml is imported:
- entries without
onare ignored - entries without
fireare ignored priorityis optional- default priority is
10 - listeners are registered through the QUIQQER event manager
Real Package Shape
quiqqer/bricks registers listeners for site, template, setup, project, and output events:
<?xml version="1.0" encoding="UTF-8"?>
<events>
<event on="onSiteSave" fire="\QUI\Bricks\Events::onSiteSave"/>
<event on="onSmartyInit" fire="\QUI\Bricks\Events::onSmartyInit"/>
<event on="onPackageSetup" fire="\QUI\Bricks\Events::onPackageSetup"/>
<event on="onDeleteProject" fire="\QUI\Bricks\Events::onDeleteProject"/>
<event on="onOutputParseEnd" fire="\QUI\Bricks\Events::onOutputParseEnd"/>
</events>Practical Checklist
Before adding events.xml:
- Use existing event names from the framework or package you integrate with.
- Point
fireto an autoloadable static method. - Match the listener method parameters to the event.
- Keep listener code small and predictable.
- Log exceptions that need later inspection.
- Use
priorityonly when listener order matters.
