开发者社区> 问答> 正文

请问php里面不能够重载方法吗??报错

我刚刚写了两个类里面有两个方法

public function findById($id){

}

public function findById(){

}

第二个方法报错,说我已经定义了一个方法名重复的函数。

请问php是不是和javascript一个造型,不能够像java一样对方法进行重载吗?

展开
收起
爱吃鱼的程序员 2020-06-22 14:45:12 484 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    不能这不是重载 这是重复回复<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多个同名不同参的函数,简直太繁琐了。

    2020-06-22 14:45:28
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-深入浅出网络编程与swoole内核-吴镇宇 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载