php 中继承的优点和缺点

Advantages and Disadvantages of Inheritance in php

任何人都可以提前告诉我 Inheritance/multi-level 继承在 php.Thanks 中的主要优点和缺点是什么 :)

优点:-

继承的主要好处之一是通过在多个子class 之间共享公共代码,最大限度地减少应用程序中重复代码的数量。在两个相关的 class 中存在等效代码的情况下,通常可以重构层次结构以将公共代码向上移动到相互超级 class。这也往往会导致更好的代码组织和更小、更简单的编译单元。

继承还可以使应用程序代码更灵活地更改,因为从公共父类class 继承的classes 可以互换使用。如果方法的return类型是superclass

可重用性 -- 使用基础 class 的 public 方法而无需重写的便利 可扩展性——根据派生 class 的业务逻辑扩展基础 class 逻辑 数据隐藏——基础 class 可以决定将一些数据保密,这样它就不会被派生的 class

改变

重写——通过继承,我们将能够重写基础 class 的方法,这样就可以在派生的 class 中设计基础 class 方法的有意义的实现].

缺点:-

  1. 继承的主要缺点之一是增加了 time/effort 程序需要跳过重载 class 的所有级别。如果一个给定的 class 在它上面有十个抽象级别,那么它基本上需要十次跳转到 运行 通过每个 classes

    [= 中定义的函数39=]
  2. 使用继承的主要缺点是两个 classes(基础和继承 class)紧密耦合。 这意味着不能彼此独立使用。

  3. 此外,随着时间的推移,在维护期间添加新功能时,需要更改基础和派生的 classes。如果更改方法签名,那么我们将在两种情况下受到影响(继承和组合)

  4. 如果在 "super class" 或聚合中删除了一个方法,那么我们将不得不重新考虑使用 method.Here 事情会变得有点复杂继承的情况,因为我们的程序仍然可以编译,但是 subclass 的方法将不再覆盖 superclass 方法。这些方法将成为独立的方法。

不确定这是否是此类问题的正确站点,但没关系。

假设您有一些基本的 class Base,每隔 class 扩展一次。在 base 你可以定义所有其他 classes 可以使用的东西,例如连接到 mysqli,所以所有 classes 都可以使用 $this->mysqli 而不需要声明它。

我构建了一个电子商务 cms,我以这种方式使用它。我还定义了一个名为 getLink() 的方法,它检查是否有方法 getUrl()getTitle()。这些方法在每个 child class 中定义(在我的 CMS ProductCategory...)。让我们以Product class为例,还有方法getUrl()getTitle(),但是方法getLink()Base中,Product 延伸。我几乎到处都使用getLink()方法,所以如果我不想在每个class中都写它,我只需将它写在Base中就可以使用它。

来自我的 CMS 的另一个示例:在 Base 构造中,我检查是否提交了名称为 global_update 的输入。它将检查 $this->table$this->id 是否已定义,如果是,它将使用数据更新数据库。否则我需要为每个更新操作定义一个处理程序。这样我就可以为每个 class 设置一个全局变量,并且我只为更复杂的表单编写自己的处理程序。

我希望这是可以理解的,如果没有,请评论并询问。