php7 参数类型限定,PHP 7.4 新功能一览之参数和返回类型改进

在对 PHP 7.2 的新功能介绍的一篇文章中,提到了当时 7.2 版本对参数和返回类型的改进,并且还引出了 LSP,即 Liskov 替换原则的话题(没看过的小伙伴建议先看看那篇)。不过当时的改进依然有一个小遗憾,即某个方法的参数(或返回)类型在子类复写时,只能将参数设置为可为 null(或限制返回不可为 null),无法做其他的类型覆盖。到了 7.4 版本,当时的小遗憾终于得到解决了

class Foo

{

}

class FooFoo extends Foo

{

}

class Bar

{

public function handle(FooFoo $foo)

{

}

}

class BarBar

{

public function handle(Foo $foo) // 在 PHP 7.4 之前是会报错的

{

}

}

class Baz

{

public function getFoo(): Foo

{

}

}

class BazBaz

{

public function getFoo(): FooFoo // 在 PHP 7.4 之前是会报错的

{

}

}

关于此改进,以及 LSP,其实也有很多可以聊的点,但在介绍 PHP7.2 那篇文章里,以及后来为 LSP 单独写的一篇文章里,其实概念的东西也还说的很清楚,这里就不用再重复了。总之 LSP 还是很值得深究的,就因为其反直觉的规则很难让人从心里上适应,导致容易违反其规则(所以才有『正方形不是长方形』,『鸵鸟不是鸟』这种经典总结)。

df83231bee01dd4e52438731a8a0385e.png

写作累,服务器还越来越贵

求分担,祝愿好人一生平安

天使打赏人

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值