diff options
Diffstat (limited to 'ext/overload/README')
-rw-r--r-- | ext/overload/README | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/ext/overload/README b/ext/overload/README deleted file mode 100644 index 1ae3dcc557..0000000000 --- a/ext/overload/README +++ /dev/null @@ -1,94 +0,0 @@ -The purpose of this extension is to allow user-space overloading of object -property access and method calls. It has only one function, overload() which -takes the name of the class that should have this functionality enabled. But -the class has to define appropriate methods if it wants to have this -functionality: __get(), __set(), and __call(). So, overloading can be -selective. - -Inside each handler the overloading is disabled so you can access object -properties normally. - - -Usage ------ -<?php - -class OO { - var $a = 111; - var $elem = array('b' => 9, 'c' => 42); - - function OO($aval = null) - { - $this->a = $aval; - } - - function __get($prop_name, &$prop_value) - { - if (isset($this->elem[$prop_name])) { - $prop_value = $this->elem[$prop_name]; - return true; - } else - return false; - } - - function __set($prop_name, $prop_value) - { - $this->elem[$prop_name] = $prop_value; - return true; - } - - function __call($method, $args, &$return_value) - { - print '-- OO::' . $method . "() was called.--\n"; - $return_value = call_user_func_array(array(&$this, 'my_' . $method), $args); - return true; - } - - function my_whatever($f1, $f2, $f3) - { - var_dump($f1, $f2, $f3); - return $f1 + $f2; - } - - function __get_foo(&$prop_value) - { - $prop_value = 'Bam bam bam!'; - return true; - } - - function __set_count($prop_value) - { - if ($prop_value >= 1 && $prop_value <= 100) { - $this->elem['COUNT'] = $prop_value; - return true; - } else - return false; - } -} - -overload('OO'); - -$o = new OO; -print "\$o->a: $o->a\n"; -print "\$o->b: $o->b\n"; -print "\$o->c: $o->c\n"; -print "\$o->d: $o->d\n"; - -$val = new stdclass; -$val->prop = 555; - -$o->a = array($val); -var_dump($o->a[0]->prop); - -var_dump($o->whatever(1, 2, 'a')); - -var_dump($o->foo); -$o->count = 100; -var_dump($o->COUNT); - -?> - -What doesn't work ------------------ -Invoking original overloading handlers, if the class had any. -__set() only works to one level of property access, no chains yet. |