I've seen that's possible to add members to objects dinamically, in example:
class MyClass { private $a; }
$MyObject = new MyClass (); $MyObject->b = 1;
Now $MyObject has a public member called 'b' that has a value of '1'.
The question is, is it possible to add methods in the same way?
I meant something such as:
function sum ( $this ) { return $this->a+$this->b; }
$MyObject->sum = sum;
Note that code will not work, but it illustrates what I'm asking for.
Sort of :)
In PHP5, this will work.
<?php
class DoesStuff
{
private $_methods = array();
public function __call($method, $params)
{
if (isset($this->_methods[$method])) {
$call = $this->_methods[$method];
return $call($this);
}
} public function __set($var, $value)
{
if (is_string($value) && is_callable($value)) {
$this->_methods[$var] = $value;
} else {
$this->$var = $value;
}
}
}function test($o)
{
return $o->val;
}
$o = new DoesStuff;
$o->val = 4;
$o->test = 'test';
echo $o->test();
?>However, you won't have access to private or protected data members. It is always better to rigidly define your methods, and extend the class as someone else suggested.
Greg
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php

