__call PHP伪重载方法

为了避免当调用的方法不存在时产生错误,可以使用 __call() 方法来避免。该方法在调用的方法不存在时会自动调用,程序仍会继续执行下去

该方法有两个参数,第一个参数 $function_name 会自动接收不存在的方法名,第二个 $args 则以数组的方式接收不存在方法的多个参数

function __call($func_name, $args)
{
    echo "你所调用的函数:$func_name(参数:<br />";
    var_dump($args);
    echo ")不存在!";
}

  

可利用该函数实现伪重载

<?php
class a
{

	function __call($name,$args)
	{
		if($name=="f")
		{
			switch(count($args))
			{
				case 0:$this->f0();break;//$this指当前类
				case 1:$this->f1($args[0]);break;
				case 2:$this->f2($args[0],$args[1]);break;
				default:$this->err();break;
			}
		}
	}

	function f0(){
		echo "it's f0";

	}
	function f1($p1){
		echo "it's f1";
		echo $p1;
	}
	function f2($p1,$p2){
		echo "it's f2";
		echo $p1;
	}
	function err()
	{
		echo "函数不存在";
	}
}
$a=new a();
$a->f(true,1);

  

原文地址:https://www.cnblogs.com/yolo-bean/p/7403195.html