您的位置:首页 > 编程语言 > PHP开发

php 重载

2014-02-25 00:11 246 查看
php 作为一种弱类型语言,本身不能像强类型如java ,c++那样,直接的实现重载。不过可以通过一些方法,间接的实现重载。

1.使用一个统一的函数来实现重载。该方法要使用func_get_args()和func_num_args()方法。

<?php
	
		function test1($name){
			echo $name;
		}

		function test2($name,$age){
			echo $name.$age;
		}

		function load(){
			//返回输入的元素数目
			$num=func_num_args();
			//返回输入元素列表的数组形式
			$arr=func_get_args();
			
			if($num==1){
				test1($arr[0]);
			}else {
				test2($arr[0],$arr[1]);
			}
		}

	load("a");
	echo "<br/>";
	load("a","b");
?>


2.使用默认值,从而根据输入,得到自己想要的结果。

<?php
	function test($name="小李",$age="23"){
		echo $name."  ".$age;
		}

	test();
	echo "<br/>";
	test("a");
	echo "<br/>";
	test("a","b");
?>


3.当对象试着调用不存在或者受权限限制的方法时,__call()方法会被自动调用,从而可以实现类型重载的效果。该方法是php5新增的方法。

<?php
	class A{
		//name :调用的方法名字。args:参数列表
		function __call($name,$args){
			$num=count($args);
			if($num==1){
				$this->test1($args[0]);
			}
			else {
			$this->test2($args[0],$args[1]);
			}
		}

		function test1($name){
			echo $name;
		}
		function test2($name, $age){
			echo $name." ".$age;
		}
	}
	
	$a=new A();
	$a->a("a");
	echo "<br/>";
	$a->a("a","b");

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: