From: "Vivian Steller" <[EMAIL PROTECTED]> > 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 . ");");
Can't you just say: OtherClass::$method($params); here? > > } > } > > 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> ---John Holmes... -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php