php __call方法是调用未定义的方法时调用的,使用语法如“$foo->__call('test', array(1, "2", 3.4, true))”,也就是相当于“$foo->test(1, "2", 3.4, true)”。
推荐:《PHP视频教程》
php魔术方法__call的用法
__call是调用未定义的方法时调用的。
也就是说,你的test方法未定义,那么test这个方法名就会作为__call的第一个参数传入,而test的参数会被装进数组中作为__call的第二个参数传入。
所以当你调用$foo->test(1, "2", 3.4, true)时,实际是相当于调用$foo->__call('test', array(1, "2", 3.4, true))。
__call方法在调用类的方法时触发,比如:
<?php class google{ public function search(){ //TODO } public function __call($method, $parameters){ //这里的method便是对应的方法,即"->"后面的字符串,$parameters是通过这个方法传过来的参数 } } $google = new google(); $keyword = 'VR'; $google->search($keyword); //当调用当前对象不存在的方法时,会转向__call $google->operate();
利用__call可以做些封装,从而调用其它对象和方法。