我有一个使用__call()的类:
public function __call($method, $args){
$method = "_".$method;
if (method_exists($this, $method)) {
try {
return $this->$method($args);
}
catch (Validation_exception $e) {
$this->exceptions[] = $e->getMessage();
return;
}
}
}
但即使我有一个返回字符串的方法,这将返回一个数组:
protected function _return_string(){
return "string";
}
如果我这样做:
echo $ myclass-> return_string();
print_r($ myclass-> return_string());
输出:
阵列()
数组([0] =>“字符串”)
为什么它会返回一个数组??
答案 0 :(得分:0)
class myClass {
protected function _return_string($arg){
return is_array($arg) ? $arg[0] : $arg;
}
public function __call($method, $args){
$method = "_".$method;
if (method_exists($this, $method)) {
try {
return $this->$method($args); // $args passed as an array here
}
catch (Validation_exception $e) {
$this->exceptions[] = $e->getMessage();
return;
}
}
}
}
$foo = new myClass();
echo $foo->__call('return_string','Hello'); // Prints "Hello"
echo $foo->return_string(' World'); //Prints "World"
//输出屏幕" Hello World"
注意:返回$ this-> $ method($ args)将$ args作为数组传递。