Vivian Steller wrote:

> Hello,
> 
> as you know there is a new callback function __call($method, $params) in
> php5. the __call() method of an object is called, if the method named
> $method is not declared in this class.
> 
> i want this function simply call the method of another class with
> "SomeClass::$method(...)" but i'm getting into trouble (bit heavy
> programming!:) passing the arguments (stored as Array in $params) to the
> "SomeClass::$method([arguments])" method...
> further, i think i'm getting problems with objects passed through the
> __call() method?!
> 
> any suggestions?
> thanks
> 
> vivi

ok, here is an example: hope you'll understand what i want...

<pre>
<?php
        class MyClass {
                function __call($method, $params) {
                        // $params = Array(mixed var, mixed var, ...);
                        print("request for " . $method . "()\n");
                        
                        // how to get objects in this string?!
                        // do i have to implement "switch($type) { case "object": ... 
}" here?!
                        $parameterstring = "\"" . $params[0] . "\""; 
                        eval("OtherClass::" . $method . "(" . $parameterstring . ");");
                
                }
        }
        
        class OtherClass {
                function OtherMethod($obj = false) {
                        if(is_object($obj)) {
                                // this method receives an object to show the 
difficulties with object
passed through call...
                                if(method_exists($obj, "printSomething")) {
                                        $obj->printSomething();
                                }       
                        }
                        else {
                                print("Error: no object passed! '" . $obj . "'\n");
                        }
                }
        }
        
        class Whatever {
                function printSomething() {
                        print("passing object through __call() is fine\n");
                }
        }
        
        $someObj = new Whatever();
        // $someObj->printSomething();
        
        $MyObj = new MyClass();
        // this works perfectly
        $MyObj->OtherMethod("passing a string");
        // this is my problem...
        $MyObj->OtherMethod($someObj);
?>
</pre>

please, try and help :)

vivi

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

Reply via email to