Callbacks
@TODO review
Introduction
A callback is a type of event in PyroCMS. Callbacks differ from events in that the scope is relative to an instance of an object. Whereas events are broadcast across the entire application.
Callbacks consist of a trigger and the callback.
Triggers
The trigger is what causes the callback to fire.
Callbacks
The callback is the callable string or Closure that is fired when the trigger is.. triggered.
Listeners
Listeners are the same as callbacks but for one major difference; they apply to all instances of the class. Whereas standard callbacks only apply to the instance they are registered on.
Basic Usage
Use the \Anomaly\Streams\Platform\Traits\FiresCallbacks trait in your class to get started.
FiresCallbacks::on()
The on method registers a simple callback.
Returns: $this
Arguments
| Key | Required | Type | Default | Description |
|---|---|---|---|---|
|
$trigger |
true |
string |
none |
The trigger for the callback. |
|
$callback |
true |
string|Closure |
none |
The callback logic or callable string. |
Example
// Example of using a callable string
$callable->on('before_starting', 'App\Example@test');
$callable->beforeStarting();
// Example of using a Closure
$callable->on('querying', function(Builder $query) {
$query->where('modifier_id', $this->example->getId());
});
$callable->sayHello('Ryan!'); // Hello Ryan!
Callbacks are called with the Service Container so all dependencies are resolved automatically.{.notice}
FiresCallbacks::listen()
The listen method registers callbacks very similar to on except the callback applies to all instances of the class.
Returns: $this
Arguments
| Key | Required | Type | Default | Description |
|---|---|---|---|---|
|
$trigger |
true |
string |
none |
The trigger for the callback. |
|
$callback |
true |
string|Closure |
none |
The callback logic or callable string. |
Example
// Example of using a callable string
$callable->on('before_starting', 'App\Example@test');
$callable->beforeStarting();
// Example of using a Closure
$callable->on('say_hello', function($name) {
return 'Hello ' . $name;
});
$callable->sayHello('Ryan!'); // Hello Ryan!
FiresCallbacks::fire()
The fire method does just as it's name suggests. It fires a callback.
Returns: mixed
Arguments
| Key | Required | Type | Default | Description |
|---|---|---|---|---|
|
$trigger |
true |
string |
none |
The trigger for the callback to fire. |
|
$parameters |
false |
array |
null |
Parameters to pass to the callback. |
Example
$callable->fire('querying', compact('builder', 'query'));
FiresCallbacks::hasCallback()
The hasCallback method returns whether or not a callback exists on the instance.
Returns: boolean
Arguments
| Key | Required | Type | Default | Description |
|---|---|---|---|---|
|
$trigger |
true |
string |
none |
The trigger for the callback to existance of. |
Example
$callable->hasCallback('querying');
FiresCallbacks::hasListener()
The hasListener method returns whether or not the class has a listener.
Returns: boolean
Arguments
| Key | Required | Type | Default | Description |
|---|---|---|---|---|
|
$trigger |
true |
string |
none |
The trigger for the listener to existance of. |
Example
$this->hasListener('querying');
Method Handlers
Method handlers are specific methods in a class that are named after a callback trigger. If the trigger is before_querying the handler method will be onBeforeQuerying.
// First register the callback.
$callable->on('querying', function(Builder $query) {
$query->where('modifier_id', $this->example->getId());
});
// Now fire using the handler method.
$callable->onQuerying(compact('builder'));
Self Handling Callbacks
If using a callable string like Example\Test@method without an @method then @handle will be assumed.
$callable->on('querying', \Example\Test::class); // Assumes 'Example\Test@handle'