php 5 方法的重载
2010-10-25 22:35
281 查看
//php 5 中可以使用 __call() 方法实现方法的重载。
//函数原型为 mixed __call(string name, array arguments)
//mixed 是一个伪类型约定。说明一个参数可以接受多种不同的类型
class A{
protected $v;
public function __construct($v){
$this->v = $v;
}
public function __call($funcname, $paras){
//name为要重载的函数名, arguments 则为调用重载函数时传入的参数所组成的数组,第一个参数在arguments[0]
if($funcname !== 'add') return null;
if(count($paras) == 1) return $this->add1($paras[0]);
if(count($paras) == 2) return $this->add2($paras[0], $paras[1]);
if(count($paras) == 3) return $this->add3($paras[0], $paras[1], $paras[2]);
}
// private function add(){
// echo "shabi/n";
// }
private function add1($v1){
echo "调用add1函数/n";
return $this->v + $v1;
}
private function add2($v1, $v2){
echo "调用add2函数/n";
return $this->v + $v1 + $v2;;
}
private function add3($v1, $v2, $v3){
echo "调用add3函数/n";
return $this->v + $v1 + $v2 + $v3;
}
}
$a = new A(100);
$r = $a->add(1);
echo $r."/n";
$r = $a->add(1, 2);
echo $r."/n";
?>
//函数原型为 mixed __call(string name, array arguments)
//mixed 是一个伪类型约定。说明一个参数可以接受多种不同的类型
class A{
protected $v;
public function __construct($v){
$this->v = $v;
}
public function __call($funcname, $paras){
//name为要重载的函数名, arguments 则为调用重载函数时传入的参数所组成的数组,第一个参数在arguments[0]
if($funcname !== 'add') return null;
if(count($paras) == 1) return $this->add1($paras[0]);
if(count($paras) == 2) return $this->add2($paras[0], $paras[1]);
if(count($paras) == 3) return $this->add3($paras[0], $paras[1], $paras[2]);
}
// private function add(){
// echo "shabi/n";
// }
private function add1($v1){
echo "调用add1函数/n";
return $this->v + $v1;
}
private function add2($v1, $v2){
echo "调用add2函数/n";
return $this->v + $v1 + $v2;;
}
private function add3($v1, $v2, $v3){
echo "调用add3函数/n";
return $this->v + $v1 + $v2 + $v3;
}
}
$a = new A(100);
$r = $a->add(1);
echo $r."/n";
$r = $a->add(1, 2);
echo $r."/n";
?>
相关文章推荐
- PHP面向对象之方法重写与重载
- php魔术方法——属性重载方法
- PHP使用方法重载实现动态创建属性的get和set方法
- 关于PHP中类方法的重载问题
- php 中的重载技术——解决调用对象(或类)的未定义的属性或方法出错问题
- php面向对象全攻略 (八)重载新的方法
- 【PHP方法重载介绍】
- 05-php中的方法重载
- php中的重载以及几个常用的魔术方法示例
- PHP魔术方法之__call重载方法
- PHP 重载方法 __call()
- PHP 重载 __call() _callStatic方法
- php面向对象基础概念(重载新的方法parent::)
- PHP的“重载方法”
- PHP中__call()方法与重载解析
- PHP 面向对象的方法重载
- php面向对象(三),抽象类,抽象方法,接口及php的”重载“
- PHP实现重载的常用方法实例详解
- php方法重载
- PHP 方法重载例子