我刚刚写了两个类里面有两个方法
public function findById($id){
}
public function findById(){
}
第二个方法报错,说我已经定义了一个方法名重复的函数。
请问php是不是和javascript一个造型,不能够像java一样对方法进行重载吗?
不能这不是重载 这是重复回复<aclass='referer'target='_blank'>@out_lier:你说的那种php里面没有如果真需要可以魔术变量模拟实现回复<aclass='referer'target='_blank'>@yangball:嗯,正准备。回复<aclass='referer'target='_blank'>@jingdor:那是重写吧。Override。和我说的不一样。回复<aclass='referer'target='_blank'>@out_lier:看手册。。。看php基础,你会恍然大悟的<atarget='_blank'>@out_lier继承之后重载魔术方法 方法 了解。什么用途?可以用默认参数严格来说(按照受众最广的OO语言的标准),PHP里没有重载。PHP里的重载指的是魔术函数那一套。
PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法。我们是通过魔术方法(magicmethods)来实现的。当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。本节后面将使用"不可访问属性(inaccessibleproperties)"和"不可访问方法(inaccessiblemethods)"来称呼这些未定义或不可见的类属性或方法。弱类型语言,重载太危险这个不一样,看php基础
在php中,同一个类中不能存在同名不同型的方法,原因有二
1)php是弱类型语言,无法根据参数类型来确定调用哪个方法
2)php的方法支持可变参数,所以也无法根据参数个数来确定调用哪个方法
你的这个例子中,可以使用默认参数解决,不能定义多个名称相同而参数不同的函数。
PHP这么做的好处是很多的,可大大减少代码量。你看看java中要实现默认参数的效果,就得定义N多个同名不同参的函数,简直太繁琐了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。