Hello list!

I am using in my application dynamic method appending to class with aggregate_methods() function. But this function is no more aviable in php5 and runkit extension seems not to be maintained any more. So I would like to replace it with something more common (__call method or so).

Just to describe the situation (simplified). There is one common class containing some common functions:

class DataLayer{

    function add_method($method){
        aggregate_methods($this, "DataLayer_".$method);
    }

    function common_funct_foo(){
        ...
    }

    function common_funct_bar(){
        ...
    }
}


And there is hundreds of data manipulation methods (defined within separate classes) which could call common functions. E.g.:


class DataLayer_get_items{
    function get_items(){
        $this->common_funct_foo();
        return something;
    }
}

And they could also call other dynamicaly added methods:

class DataLayer_update_attr{
    function update_attr(){
        $this->get_items();
        $this->common_funct_bar();
        return;
    }
}

All the stuff is used e.g. in this way:

$data = new DataLayer();
$data->add_method('get_items');
$data->add_method('update_attr');
$data->update_attr();



Now the question is whether is it possible to somehow replace functionality of add_method() without aggregate_methods() or runkit_class_adopt(). And _WITHOUT_ need to change the hundreds of DataLayer_* classes. The change should be only in the main DataLayer class. I was thinking about __call() method, but I do not know how to deal with the $this in dynamicaly appended functions. I need somehow make to $this in these functions reference to instance of DataLayer class.

Any ideas?

many thanks,
Karel


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to