php 作为一种弱类型语言,本身不能像强类型如java ,c++那样,直接的实现重载。不过可以通过一些方法,间接的实现重载。
-
使用一个统一的函数来实现重载。该方法要使用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.当对象试着调用不存在或者受权限限制的方法时,__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"); ?>