__call PHP伪重载方法

Posted yolo_bean

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__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);

  

以上是关于__call PHP伪重载方法的主要内容,如果未能解决你的问题,请参考以下文章

PHP 重载方法 __call()

php中 重载的方法

PHP中的__call和__callStatic方法(未看完)

PHP魔术方法和魔术变量总结

常见的魔术方法

PHP通过_call实现多继承