October\Rain\Extension\Extendable

Source: ~/vendor/october/rain/src/Extension/Extendable.php

Extension class

If a class extends this class, it will enable support for using "Private traits".

Usage:

public $implement = ['Path.To.Some.Namespace.Class'];

See the ExtensionBase class for creating extension classes.

Public properties

public array $implement

Extensions implemented by this class.

Protected properties

protected array $extensionData

Class reflection information, including behaviors.

protected static array $extendableCallbacks

Used to extend the constructor of an extendable class. Eg:

Class::extend(function($obj) { })

protected static array $extendableStaticMethods

Collection of static methods used by behaviors.

protected static bool $extendableGuardProperties

Indicates if dynamic properties can be created.

Public methods

public void __call($name, $params)
Parameters
  • $name
  • $params

public static void __callStatic($name, $params)
Parameters
  • $name
  • $params

public void __construct()

Constructor

public void __get($name)
Parameters
  • $name

public void __set($name, $value)
Parameters
  • $name
  • $value

public void addDynamicMethod(string $dynamicName, callable $method, string $extension=NULL)

Programmatically adds a method to the extendable class

Parameters
  • string $dynamicName
  • callable $method
  • string $extension

public void addDynamicProperty(string $dynamicName, string $value=NULL)

Programmatically adds a property to the extendable class

Parameters
  • string $dynamicName
  • string $value

public mixed asExtension(string $shortName)

Short hand for getClassExtension() method, except takes the short extension name, example:

$this->asExtension('FormController')
Parameters
  • string $shortName

public static void clearExtendedClasses()

Clear the list of extended classes so they will be re-extended.

public static void extend($callback)
Parameters
  • $callback

public void extendClassWith(string $extensionName)

Dynamically extend a class with a specified behavior

Parameters
  • string $extensionName

public mixed extendableCall(string $name, array $params=NULL)

Magic method for __call()

Parameters
  • string $name
  • array $params

public static mixed extendableCallStatic(string $name, array $params=NULL)

Magic method for __callStatic()

Parameters
  • string $name
  • array $params

public void extendableConstruct()

This method should be called as part of the constructor.

public static void extendableExtendCallback(callable $callback)

Helper method for ::extend() static method

Parameters
  • callable $callback

public string extendableGet(string $name)

Magic method for __get()

Parameters
  • string $name

public string extendableSet(string $name, string $value)

Magic method for __set()

Parameters
  • string $name
  • string $value

public mixed getClassExtension(string $name)

Returns a behavior object from an extendable class, example:

$this->getClassExtension('Backend.Behaviors.FormController')
Parameters
  • string $name - Fully qualified behavior name

public array getDynamicProperties()

Returns all dynamic properties and their values

public boolean isClassExtendedWith(string $name)

Check if extendable class is extended with a behavior object

Parameters
  • string $name - Fully qualified behavior name

public boolean methodExists(string $name)

Checks if a method exists, extension equivalent of method_exists()

Parameters
  • string $name

public boolean propertyExists(string $name)

Checks if a property exists, extension equivalent of property_exists()

Parameters
  • string $name

Protected methods

protected boolean extendableIsAccessible(mixed $class, string $propertyName)

Checks if a property is accessible, property equivalent of is_callable()

Parameters
  • mixed $class
  • string $propertyName

protected void extensionExtractMethods(string $extensionName, object $extensionObject)

Extracts the available methods from a behavior and adds it to the list of callable methods.

Parameters
  • string $extensionName
  • object $extensionObject