php 没有重载,PHP 不支持重载

(引自:互联网)

问:

sb('shabi');

sb('shabi','bisha');

function sb($a) {

echo $a;

}

function sb($a,$b) {

echo $a.$b;

}

function sb($a,$b,$c) {

echo $a.$b.$c;

}

?>

Fatal error: Cannot redeclare sb() (previously declared in

D:\www\test1.php:5) in D:\www\test1.php on line 10

还是我写的不对?

______________________________________________________________________________________________

答1:

php4暂时不支持

______________________________________________________________________________________________

答2:

你这样是不行的

php不支持函数的重载,以后也不会支持

在oop中,函数的重载有两个条件

1、参数的个数不同——php支持参数缺省,无法用参数个数区别

2、参数的类型不同——php是弱类型语言,会根据上下文自动做类型转换

所以,php不可能支持函数的重载

你可以这样定义函数

function sb($a,$b="",$c="") {

echo $a.$b.$c;

}

______________________________________________________________________________________________

答3:

看看CU的精华帖:

“很多人说php4不能支持函数重载”

http://www.chinaunix.net/jh/27/189443.html

呵呵,虽然并不是真正意义上的重载,但是接口的对外表达形式和重载是一样的。

______________________________________________________________________________________________

答4:

to mikespook(Mike大懒猫)

非常遗憾,那位帖主把概念弄混了。

同是function定义,在过程你称作“函数”,在类里称作“方法”。

尽管php的类支持方法的重载,但同样不能在一个类定义中定义两个同名的方法

class x {

function aa($a,$b) {}

function aa($a) {}

}

______________________________________________________________________________________________

答5:

呵呵~~~

我不说了么:“虽然并不是真正意义上的重载,但是接口的对外表达形式和重载是一样的。”

虽然 class x不能定义两个同名的方法~~~但是使用这篇帖子的方法在类的对外接口上是和重载一样的~~~~

只不过定义了一个方法而已~~

但是在传递进不同个数的参数的时候调用了不同的方法~~~~

本文来自: 站长(http://www.qqcf.com)

详细出处参考:http://study.qqcf.com/web/722/275504.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值