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