PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
本文实例讲述了PHP模拟一般面向对象语言中的方法重载(overload)。分享给大家供大家参考,具体如下:
在一般的面向对象设计语言(如C++,Java)中的方法重载就是定义相同的方法名,通过“参数的个数”不同或“参数的类型”不同,来访问我们的相同方法名的不同方法。但是PHP中,方法是不能重载的,因为PHP是弱类型的语言,所以在方法的参数中本身就可以接收不同类型的数据,又因为PHP的方法可以接收不定个数的参数,所以通过传递不同个数的参数调用不相同方法名的不同方法也是不成立的。所以在PHP里面没有传统上的重载(overload)方法,但由于php其灵活性,可以模拟一般面向对象语言中的重载方法。
首先来看一个例子:
area(10),'
'; //计算矩形的面积 echo$calc->area(5,8); ?>
运行结果:
314
40
下面的例子是利用利用PHP的重载(overloading)技术,使用魔术方法,来实现传统上的方法重载(overload)。
关于PHP中的重载技术,请参考:PHP面向对象_重载(overloading)
例子:
3){ trigger_error("参数数量有误!",E_USER_ERROR); }elseif($len==1){ return$argument[0]; }elseif($len==2){ return$argument[0]*$argument[0]+$argument[1]*$argument[1]; }elseif($len==3){ $v1=$argument[0]; $v2=$argument[1]; $v3=$argument[2]; return$v1*$v1*$v1+pow($v2,3)+pow($v3,3); } }elseif($Func_name==='f2'){//另一个不存在的方法 }elseif($Func_name==='f3'){//...... } } } $a=newA(); $v1=$a->f1(1); $v2=$a->f1(2,3); $v3=$a->f1(4,5,6); echo"v1=$v1,v2=$v2,v3=$v3"; ?>
运行结果为:
v1=1,v2=13,v3=405
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。