展开全部
php 作为一种弱类型语言,本身不能像强类型如java ,c++那样,直接的实现重载。不过可e68a84e8a2ad62616964757a686964616f31333337393539以通过一些方法,间接的实现重载。使用一个统一的函数来实现重载。该方法要使用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 "
";
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 "
";
$a->a("a","b");
?>