<?php
header("content-type:text/html;charset='utf-8'");
class A{
private $name;
private $age = 20;
function displayObject($p){
print_r($p);
}
function displayArray($p){
print_r($p);
}
function displayScalar($p){
print_r($p);
}
function __call($method,$p){
if($method=='display'){
if(is_object($p[0])){
$this->displayObject($p[0]);
}else if(is_array($p[0])){
$this->displayArray($p[0]);
}else{
$this->displayScalar($p[0]);
}
}
}
}
$a = new A();
echo $a->display(array('sdfsd','sdfdsf','123'));
echo $a->display($a);
echo $a->dispaly('25');
结果:
总结:__call方法必须要有两个参数,第一个包含了被调用的方法名称,第二个参数包含了传递给该方法的数组。