如何在PHP/Laravel中使用Liskov替代原则
#php #laravel #solidprinciples #liskovsubstitution

在本教程中,我会以一个非常简单的方式向您展示一个例子,即如何在PHP/Laravel中使用LSP(Liskov替代原理)。让我们开始步行…

首先,让我解释什么是liskov替代原则

liskov替代原则是实体原理的第三原理。在固体中,L代表Liskov替代原则。 Liskov替代原则是指任何抽象或界面的实施应在接受抽象的任何地方替代。延长课程时,请记住,您应该能够通过不破坏客户端代码的父母类的子类的对象。这意味着子类应与超类的行为保持兼容。覆盖方法时,扩展基本行为,而不是完全用其他东西代替。每个实现接口的类都必须能够替换在实现同一接口的整个代码中的任何参考。无论您发送到该类的类别的哪个实例,代码的每个部分都应获得预期的结果,鉴于它实现了相同的接口。

LSP(Liskov替代原理)的主题

  1. 签名必须匹配
  2. 先决条件可以更大
  3. 后条件至少等于
  4. 异常类型必须匹配

让我们开车进入深

Image description

您看到上图是LSP(Liskov替代原理)的最熟悉和最常见的现实示例。有两只鸭子是真实的,另一个是橡皮鸭。两者看起来都一样,但它们的活动不一样。查看下面的图片。

Image description

在上面的图片中,您会看到Rubberduck的类延伸鸭,并有三种方法。 quack(),fly()和swim()。在此课程中,我们违反了LSP,因为我们覆盖了与父母鸭班不匹配的方法和投掷例外。真正的鸭子可以飞,但是橡皮鸭可以飞,而蝇蝇的返回类型是不一样的,所以在这一点上,我们正在打破LSP。

让我们修复lsp(liskov替代原则)违规。

我们可以将代码扩展到以下图片的不同接口。

Image description

在上图中,我们有三个不同的接口是Quackable Interface,Flyable Interface,swimmable Interface。现在,我们可以实现橡皮花级课程(如Quackable Interface和swimmable Interface)所需的接口,因为橡皮鸭可以通过帮助第三人称人来嘎嘎或游泳,但它永远无法飞行,因此无法实现苍蝇接口。这就是我们如何解决LSP违规行为。

Image description

总而言之,Liskov的替代原则非常简单,它为每个孩子班级替代其父母阶级提供了能力。要遵循您只需要关注的LSP,任何儿童类方法的返回类型和异常类型都必须与其父类或实现的接口匹配。

有关可靠原理的更多详细信息,您可能会查看下面给出的链接。如果您有任何反馈,疑问或希望我写有关另一个PHP/Laravel相关的主题,请随时发表评论。