PHP 函数重载

原创 2011年01月10日 14:01:00

对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样。

因为函数重载必须满足两个条件:

1、函数参数的个数不一样。

2、参数的类型不一样。

这两点,PHP都没有办法满足,您可以对函数多添加参数,只是相当于多传了个临时变量。而弱类型本来就不区分,所以无法通过这些来实现。

但是,可以通过下面的方法来实现简单的伪重载吧。

1、默认参数

从这个上面就可以看到,如果一个函数里面,我对不是必须参数填写添加相应的默认值,就可以完成相应的功能。

2、利用函数func_get_args()和call_user_func_array(),详细的帮助参照PHP手册。

利用一个有规则的函数进行调用,以方便统一管理。

3、利用__call($name, $arg) 函数进行处理。


总结,这几种方法,都可以实现伪重载,基本第2种和第3种,内容可以相互处理判断。

文中只是给出了方法,可能还有许多细节地方需要处理,比如,判断整型、类别等。

不过,根据上面的内容,php可能永远不会出现真正的重载,那样就会失去语言本身的意义了。

php面向对象之重载(overloading)

在java中,重载就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法,这也牵涉到了多态。 在PHP中呢,有人说php没有多态,那重...
  • forLightWay
  • forLightWay
  • 2017年01月10日 14:23
  • 1291

php实现重载

php是弱类型语言,并没有像JAVA这种强类型语言一样有重载。 重载一般来说就是拥有相同的函数名或方法名,但是参数列表却不同(包括参数个数和参数类型) 从这个定义来说,php是没有重载的,因为ph...
  • whd526
  • whd526
  • 2017年04月19日 14:16
  • 527

PHP中重载

PHP中的重载 PHP中重载就重新在加载的意思,和c++,Java里面的重载的概念不太一样,c++,java一般指的是重复加载; 重载overload是指PHP对当前对象的不可访问成员的处理; ...
  • woshinannan741
  • woshinannan741
  • 2015年12月24日 19:42
  • 1155

关于PHP中类方法的重载问题

重载:是类的多态的一种实现。函数重载指一个标识符被用作多个函数名,且能够通过函数的参数个数或参数类型将这些同名的函数区分开来,调用不发生混淆。这样做的主要好处就是,不用为了对不同的参数类型或参数个数,...
  • baidu_30000217
  • baidu_30000217
  • 2015年11月13日 16:19
  • 1327

php函数重载与构造函数重载

class A {      function __call ($name, $args )     {         if($name=='f')         {        ...
  • zcanjie
  • zcanjie
  • 2014年12月06日 17:34
  • 2140

2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛

https://www.nowcoder.com/acm/contest/63/B 栗酱的文明2 分析:排序https://www.nowcoder.com/acm/contest/63/E E...
  • feng_zhiyu
  • feng_zhiyu
  • 2017年12月23日 17:28
  • 178

≮★怎么破解龙虎机★≯

≮★怎么破解龙虎机★≯QQ:609352545  订购热线:15859299674百家乐分析仪电脑精密多元素分析仪是华新娱乐有限公司新型的一款多元素保单分析仪,QQ:609352545  订购热线:1...
  • qqq609352545
  • qqq609352545
  • 2011年11月13日 04:17
  • 3

网易秋招2018笔试题 重排数列

重排数列 题目要求 小易有一个长度为N的正整数数列A = {A[1], A[2], A[3]..., A[N]}。 牛博士给小易出了一个难题: 对数列A进行重新排列,使数列A满足所有的...
  • sun1cool
  • sun1cool
  • 2017年09月10日 14:05
  • 850

2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 E 栗酱的数列【差分+KMP】

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 题目描述 栗酱有一个长度为n的数列A,一个长...
  • Irish_Moonshine
  • Irish_Moonshine
  • 2017年12月23日 18:46
  • 47

hdu 5147——Sequence II

题意:HDU提供了中文题目。。。 有一个长度为n的数列A,数列中的每个数都不小于1且不大于n,且数列中不存在两个相同的数. 请统计有多少四元组(a,b,c,d)满足: 1. 1≤abcd≤n 2. ...
  • u010734277
  • u010734277
  • 2014年12月21日 15:40
  • 293
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP 函数重载
举报原因:
原因补充:

(最多只允许输入30个字)