Object Extensions for PHP
A runtime object extension and callback library for PHP
The Object Extensions library for PHP adds the following functionality
to objects that extend the base class:
- Runtime object extension to "extend" an object by another class at
runtime (to virtually inherit all public properties and methods).
- Runtime callback definitions to be able to pass function/method
callbacks as variables, and subsequently execute them from other
function/methods.
- Dynamic object properties class to handle runtime setting/getting
of object properties, as well as ability to pass function arguments
as object-based parameters rather than long list of options.
OBJECT EXTENSION:
- Base class (CExtendable) implements a _extend() function by which
you may vritually extend an object by an instance of another object.
- Extended object (object passed to _extend) can reference parent
object if supported by extended class.
- __get, __set and __call are all overriden to handle overriding
undefined properties and methods
- Ability to reference a callback in a straightforward manner
($object->_callback()->method(args, [...]))
CALLBACK FUNCTIONALITY:
- Can create callbacks directly (through CCallback and derived
classes)
- Can create method callbacks by calling _callback() method on
CExtendable objects
- When combined with object extension and object properties, can
provide a really easy way to execute callbacks.
OBJECT PROPERTIES:
- Base class extends ArrayIterator, all properties saved in an array
- Basic functionality to check values provided and/or set default
values.
- Overrides __get, __set to get/set object properties.
- Can limit property set-tability to existing properties only, or to
provided array of properties.
- Can enable read-only mode.
- Overrides __call, and in the case that the a property value with
the same name as the method name exists, and is an instance of the
ICallback interface, this callback is executed.
PHP COMPATIBILITY:
Object Extensions for PHP uses PHP5 functionality. It would be
theoretically possible to implement similar functionality into PHP4,
however, since I no longer develop in PHP4, I cannot properly test it.
|