本文实例讲述了PHP实现重载的常用方法。分享给大家供大家参考,具体如下:
PHP是弱类型语言,并没有像JAVA这种强类型语言一样有重载。
重载一般来说就是拥有相同的函数名或方法名,但是参数列表却不同(包括参数个数和参数类型)
从这个定义来说,PHP是没有重载的,因为PHP不允许存在相同的函数名。
但是没有并不意味着不能实现。
PHP有四种机制可以实现重载:(下面用java进行对比)
1. 弱类型,无需定义变量类型
先举一个JAVA重载的例子:
PHP;">
2. 可选参数,允许变量设置默认值
JAVA重载例子:
用PHP可选参数特性实现:
PHP;">
3. 可变参数
主要用到以下两个函数:
func_num_args()
返回函数的参数个数
func_get_args()
返回一个包含函数参数列表的数组
具体实现方式:
PHP;">
method2($args[0],$args[1]);
break;
case 3:
$this->method3($args[0],$args[1],$args[2]);
break;
}
}
private function method2($var1,$var2){
#code...
}
private function method3($var1,$var3){
#code...
}
}
//调用
$obj = new demo();
$obj->method('var1','var2');
$obj->method('var1','var2','var3');
//看起来似乎通过一个接口调用
//但其实内部已经调用了各自定义的方法
?>
4. 使用魔术方法 __call()
public mixed __call ( string $name,array $arguments )
在对象中调用一个不可访问的方法时,__call()
会被自动调用
具体实现方式类似上面的第三要点:
PHP;">
method2($args[0],$args[1]);
break;
case 3:
$this->method3($args[0],$args[2]);
break;
}
}
}
private function method2($var1,$var3){
#code...
}
}
//调用
$obj = new demo();
$obj->method("var1","var2");
$obj->method("var1","var2","var3");
?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://www.f2er.com/php/16693.html