class Extension

Add extension that can be added to an object with {@link Object::add_extension()}.

For {@link DataObject} extensions, use {@link DataExtension}. Each extension instance has an "owner" instance, accessible through {@link getOwner()}. Every object instance gets its own set of extension instances, meaning you can set parameters specific to the "owner instance" in new Extension instances.

Methods

__construct()

No description

static 
add_to_class(string $class, string $extensionClass, mixed $args = null)

Called when this extension is added to a particular class

setOwner(object $owner)

Set the owner of this extension.

mixed
withOwner(mixed $owner, callable $callback, array $args = [])

Temporarily modify the owner. The original owner is ensured to be restored

clearOwner()

Clear the current owner, and restore extension to the state prior to the last setOwner()

Object
getOwner()

Returns the owner of this extension.

static string
get_classname_without_arguments(string $extensionStr)

Helper method to strip eval'ed arguments from a string that's passed to {@link DataObject::$extensions} or {@link Object::add_extension()}.

mixed
invokeExtension(object $owner, string $method, array $arguments)

Invoke extension point. This will prefer explicit extend prefixed methods.

Details

at line 39
__construct()

at line 50
static add_to_class(string $class, string $extensionClass, mixed $args = null)

Called when this extension is added to a particular class

Parameters

string $class
string $extensionClass
mixed $args

at line 60
setOwner(object $owner)

Set the owner of this extension.

Parameters

object $owner The owner object

at line 74
mixed withOwner(mixed $owner, callable $callback, array $args = [])

Temporarily modify the owner. The original owner is ensured to be restored

Parameters

mixed $owner Owner to set
callable $callback Callback to invoke
array $args Args to pass to callback

Return Value

mixed

at line 87
clearOwner()

Clear the current owner, and restore extension to the state prior to the last setOwner()

at line 100
Object getOwner()

Returns the owner of this extension.

Return Value

Object

at line 113
static string get_classname_without_arguments(string $extensionStr)

Helper method to strip eval'ed arguments from a string that's passed to {@link DataObject::$extensions} or {@link Object::add_extension()}.

Parameters

string $extensionStr E.g. "Versioned('Stage','Live')"

Return Value

string Extension classname, e.g. "Versioned"

at line 128
mixed invokeExtension(object $owner, string $method, array $arguments)

Invoke extension point. This will prefer explicit extend prefixed methods.

Parameters

object $owner
string $method
array $arguments &...$arguments

Return Value

mixed