Extendable
        
        Extension class
    
    
 class Winter\Storm\Extension\ExtendableIf 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.
Traits
| Trait | Description | 
|---|---|
| ExtendableTrait | This extension trait is used when access to the underlying base class is not available, such as classes that belong to the foundation framework (Laravel). It is currently used by the Controller and Model classes. | 
Properties
            
            
            
                public
            
            
            $implement
            
                :
                                                                                                                string
                                                                                                |
                                                                            array
                                                                                                |
                                                                            null
                                                                                                
                        = null
                    
                            
        
        
        Extensions implemented by this class.
            
            
            
                protected
            
            
            $extendableConstructed
            
                :
                                                            bool
                                                                        
                        = false
                    
                            
        
        
        Indicates if the extendable constructor has completed.
            
            
            
                protected
            
            
            $localCallbacks
            
                :
                                                            array
                                                                        
                        = []
                    
                            
        
        
        This stores any locally-scoped callbacks fired before the extendable constructor had completed.
            
                            
                    inherited
                
            
            
                protected
            
                            
                    static
                
            
            $extendableCallbacks
            
                :
                                                            array
                                                                        
                        = []
                    
                            
        
                    Used to extend the constructor of an extendable class. Eg:
Class::extend(function($obj) { })
            
                            
                    inherited
                
            
            
                protected
            
                            
                    static
                
            
            $extendableClassLoader
            
                :
                                                                                                                ClassLoader
                                                                                                |
                                                                            null
                                                                                                
                        = null
                    
                            
        
                    Class loader instance.
            
                            
                    inherited
                
            
            
                protected
            
                            
                    static
                
            
            $extendableStaticMethods
            
                :
                                                            array
                                                                        
                        = []
                    
                            
        
                    Collection of static methods used by behaviors.
            
                            
                    inherited
                
            
            
                protected
            
            
            $extensionData
            
                :
                                                            array
                                                                        
                        = {"extensions":[],"methods":[],"dynamicMethods":[],"dynamicProperties":[]}
                    
                            
        
                    Class reflection information, including behaviors.
Methods
public __call ($name, $params)
| Property | Type | Description | 
|---|---|---|
| $name | mixed | mixed | 
| $params | mixed | mixed | 
public static __callStatic ($name, $params)
| Property | Type | Description | 
|---|---|---|
| $name | mixed | mixed | 
| $params | mixed | mixed | 
public __construct ()
Constructor
public __get ($name)
| Property | Type | Description | 
|---|---|---|
| $name | mixed | mixed | 
public __set ($name, $value)
| Property | Type | Description | 
|---|---|---|
| $name | mixed | mixed | 
| $value | mixed | mixed | 
            
            
            
                public
            
                            
                    static
                
                        
            extendableAddExtension (callable $callback, boolean $scoped = false, $outerScope = null)
                            : void
                    
        
        Extends the class using a closure.
The closure will be provided a single parameter which is the instance of the extended class, by default.
You may optionally specify the callback as a scoped callback, which inherits the scope of the extended class and
provides access to protected and private methods and properties. This makes any call using $this act on the
extended class, not the class providing the extension.
If you use a scoped callback, you can provide the "outer" scope - or the scope of the class providing the extension, with the third parameter. The outer scope object will then be passed as the single parameter to the closure.
| Property | Type | Description | 
|---|---|---|
| $callback | callable | callable | 
| $scoped | boolean | boolean | 
| $outerScope | mixed | mixed | 
            
            
            
                protected
            
                        
            extendableAddLocalExtension (Closure $callback, $outerScope = null)
                    
        
        Adds local extensibility to the current instance.
This rebinds a given closure to the current instance, making it able to access protected and private methods. This
makes any call using $this within the closure act on the extended class, not the class providing the extension.
An outer scope may be provided by providing a second parameter, which will then be passed through to the closure as its first parameter. If this is not given, the current instance will be provided as the first parameter.
| Property | Type | Description | 
|---|---|---|
| $callback | Closure | Closure | 
| $outerScope | mixed | mixed | 
            
                            
                    inherited
                
            
            
                public
            
                        
            addDynamicMethod (string $dynamicName, callable $method, string $extension = null)
                    
                    Programmatically adds a method to the extendable class
| Property | Type | Description | 
|---|---|---|
| $dynamicName | string | string | 
| $method | callable | callable | 
| $extension | string | string | 
            
                            
                    inherited
                
            
            
                public
            
                        
            addDynamicProperty (string $dynamicName, mixed $value = null)
                            : void
                    
                    Programmatically adds a property to the extendable class
| Property | Type | Description | 
|---|---|---|
| $dynamicName | string | string The name of the property to add | 
| $value | mixed | mixed The value of the property | 
inherited public asExtension (string $shortName) : mixed
Short hand for getClassExtension() method, except takes the short
extension name, example:
$this->asExtension('FormController')
| Property | Type | Description | 
|---|---|---|
| $shortName | string | string | 
inherited public static clearExtendedClasses () : void
Clear the list of extended classes so they will be re-extended.
inherited public extendClassWith (string $extensionName) : void
Dynamically extend a class with a specified behavior
| Property | Type | Description | 
|---|---|---|
| $extensionName | string | string | 
            
                            
                    inherited
                
            
            
                public
            
                        
            extendableCall (string $name, array $params = null)
                            : mixed
                    
                    Magic method for __call().
Callback priority is as follows:
- "Dynamic Methods" added locally to the object via addDynamicMethod($name, $callable)
- Methods available on Behaviors that have been implemented by the object
- Pass it to the parent's __call() method if it defines one
| Property | Type | Description | 
|---|---|---|
| $name | string | string | 
| $params | array | array | 
            
                            
                    inherited
                
            
            
                public
            
                            
                    static
                
                        
            extendableCallStatic (string $name, array $params = null)
                            : mixed
                    
                    Magic method for __callStatic()
| Property | Type | Description | 
|---|---|---|
| $name | string | string | 
| $params | array | array | 
inherited public extendableConstruct ()
This method should be called as part of the constructor.
            
                            
                    inherited
                
            
            
                public
            
                            
                    static
                
                        
            extendableExtendCallback (callable $callback, boolean $scoped = false, $outerScope = null)
                            : void
                    
                    Helper method for ::extend() static method.
| Property | Type | Description | 
|---|---|---|
| $callback | callable | callable | 
| $scoped | boolean | boolean | 
| $outerScope | mixed | mixed | 
inherited public extendableGet (string $name) : mixed | null
Magic method for __get()
| Property | Type | Description | 
|---|---|---|
| $name | string | string | 
inherited public extendableSet (string $name, mixed $value) : void
Magic method for __set()
| Property | Type | Description | 
|---|---|---|
| $name | string | string | 
| $value | mixed | mixed | 
inherited public getClassExtension (string $name) : mixed
Returns a behavior object from an extendable class, example:
$this->getClassExtension('Backend.Behaviors.FormController')
| Property | Type | Description | 
|---|---|---|
| $name | string | string Fully qualified behavior name | 
inherited public getClassMethods () : array
Get a list of class methods, extension equivalent of get_class_methods()
inherited public getDynamicProperties () : array
Returns all dynamic properties and their values
['property' => 'value']
inherited public isClassExtendedWith (string $name) : bool
Check if extendable class is extended with a behavior object
| Property | Type | Description | 
|---|---|---|
| $name | string | string Fully qualified behavior name | 
inherited public methodExists (string $name) : bool
Checks if a method exists, extension equivalent of method_exists()
| Property | Type | Description | 
|---|---|---|
| $name | string | string | 
inherited public propertyExists (string $name) : bool
Checks if a property exists, extension equivalent of property_exists()
| Property | Type | Description | 
|---|---|---|
| $name | string | string | 
inherited protected extendableIsAccessible (mixed $class, string $propertyName) : bool
Checks if a property is accessible, property equivalent of is_callable()
| Property | Type | Description | 
|---|---|---|
| $class | mixed | mixed | 
| $propertyName | string | string | 
inherited protected extensionCallMethod (ReflectionClass $class, string $method, array $params)
Calls a method through reflection.
| Property | Type | Description | 
|---|---|---|
| $class | ReflectionClass | ReflectionClass | 
| $method | string | string | 
| $params | array | array | 
inherited protected extensionExtractMethods (string $extensionName, object $extensionObject) : void
Extracts the available methods from a behavior and adds it to the list of callable methods.
| Property | Type | Description | 
|---|---|---|
| $extensionName | string | string | 
| $extensionObject | object | object | 
inherited protected extensionGetClassLoader () : Winter\Storm\Support\ClassLoader | null
Gets the class loader
            
                            
                    inherited
                
            
            
                protected
            
                        
            extensionGetParentClass ($instance = null)
                            : ReflectionClass | false
                    
                    Gets the parent class using reflection.
The parent class must either not be the Extendable class, or must not be using the ExtendableTrait trait,
in order to prevent infinite loops.
| Property | Type | Description | 
|---|---|---|
| $instance | mixed | mixed | 
inherited protected extensionMethodExists (ReflectionClass $class, string $methodName) : bool
Determines if the given class reflection contains the given method.
| Property | Type | Description | 
|---|---|---|
| $class | ReflectionClass | ReflectionClass | 
| $methodName | string | string | 
inherited protected extensionNormalizeClassName (string $name) : string
Normalizes the provided extension name allowing for the ClassLoader to inject aliased classes
| Property | Type | Description | 
|---|---|---|
| $name | string | string | 
Extended by
| Class | Description | 
|---|---|
| WidgetBase | Widget base class. | 
| Asset | The CMS theme asset file class. | 
| CodeBase | Parent class for PHP classes created for layout and page code sections. | 
| ComponentBase | Component base class | 
| ComponentPartial | The CMS component partial class. These objects are read-only. | 
| Model | This is a base template object. Equivalent to a Model in ORM. |