Add a hook that will be accessible as a new object property.
This enables you to add a new accessible property to an existing object, which will execute your hook implementation method when called upon.
Note that adding a hook with this just makes it possible to call the hook as a property. Any hook property you add can also be called as a method, i.e. $obj->foo
and $obj->foo()
are the same.
Example
// Adding a hook property
$wire->addHookProperty('Page::lastModifiedStr', function($event) {
$page = $event->object;
$event->return = wireDate('relative', $page->modified);
});
// Accessing the property (from any instance)
echo $page->lastModifiedStr; // outputs: "10 days ago"
Usage
// basic usage
$string = $wire->addHookProperty($property, $toObject);
// usage with all arguments
$string = $wire->addHookProperty($property, $toObject, $toMethod = null, array $options = []);
Arguments
Name | Type(s) | Description |
---|---|---|
property | string, array | Name of property you want to add, must not collide with existing property or method names:
|
toObject | object, null, callable | Specify one of the following:
|
toMethod (optional) | string, array | Method from $toObject, or function name to call on a hook event. This argument can be sustituted as the 2nd argument when the 2nd argument isn’t needed, or it can be the $options argument. |
options (optional) | array | Options typically aren't used in this context, but see Wire::addHookBefore() $options if you'd like. |
Return value
string
A special Hook ID (or CSV string of hook IDs) that should be retained if you need to remove the hook later.
API reference based on ProcessWire core version 3.0.236