php不调用父类构造_PHP 实例化子类为何不自动调用父类的构造方法?

刚从一个相关问题的坑里走出来,搜到这个问题,试着答一波,如有偏颇,还请高人指点

先说句废话:两种设计肯定都没错,各有优缺。

那么这个问题就转化为了两种设计的优缺点分别是什么?

java:

先说同一个类多构造函数之间overload,这个本来就是应对进入到方法的时候,参数不一样的情形的,即为横向扩展。那这里最少的情况就是默认的,无参的。那其他overload出来的,肯定想基于这个最基础的进行扩展。所以就一般都会手动调用下无参的构造函数。

再说父子之间构造函数的override,这个是用来应对,进入到方法之后方法内部逻辑不同的情形的,相对父类这是纵向扩展。

不管是横向扩展还是纵向扩展,既然是扩展都有个最简单的起点,那无疑是父类无参构造函数。

php:

横向:不好意思,简单点,我没有overload,我一个方法你随便调用,想支持不同参数不同逻辑,找魔术方法去。

纵向:不好意思,我子类看不上你父类的东西,我自己清清楚楚搞一份,你别管我。

总结:

java子类:自动继承父类最基础的操作,达到代码复用,更严格。

php子类:你别管我,我想用自己会调,不要给我隐含语义,有啥想弄得,写出来有多麻烦。

个人觉得还是php的设计,更灵活,你说网络检查等通用操作,父类写一遍就行了,如果都搞成java那样,万一有个子类不想检查,那岂不是犯难,如果这个类还是第三方库里面的,那你就稍微要再麻烦点了。放到PHP这,我不想检查就不调用呗,其他的兄弟类想用的,辛苦下,多写一句parent::__construct,岂不是更清晰明确。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值