PHP魔术方法__call与__callStatic的应用区别

时间:2017-03-19 22:17:38 类型:PHP
字号:    

__call 当要调用的方法不存在或权限不足时,会自动调用__call 方法。

__callStatic 当调用的静态方法不存在或权限不足时,会自动调用__callStatic方法。


__call($funcname, $arguments)

__callStatic($funcname, $arguments)


参数说明:

$funcname String 调用的方法名称。

$arguments Array 调用方法时所带的参数。


class Test{
	public function __call($fun,$arg)
	{
		echo "当调用的方法不存在或者没有权限时, 就开始调用__call了<br/>";
		echo "方法名: $fun<br/>";
		var_dump($arg);
	}
	public static function __callStatic($fun,$arg)
	{
		echo "当调用的静态方法不存在或者没有权限时, 就开始调用__callStatic了<br/>";
		echo "调用方法名: $fun<br/>";
		var_dump($arg);
	}
}
$test = new Test();
$test -> sing('庄子',18); //Test类中没有 sing方法 , 自动调用 __call方法

Test::zhuangzi('carl','男'); //Test类中没有 zhuangzi 静态方法 自动调用 __callStatic方法