【问题标题】:php classes relation and how to extend classesphp 类关系以及如何扩展类
【发布时间】:2012-07-03 10:37:15
【问题描述】:

我的查询是关于类的体系结构和关系,我想知道比我实现的更好的解决方案。

我有 4 节课,每节课解释一行

  1. core.php 类,包含所有常用功能
  2. A.php 类文件,其中包含任务 A 的特定功能,例如在 csv 文件 A 上写入。
  3. B.php 类文件,其中包含任务 B 的特定功能,例如编写另一个与 csv A 完全不同的 csv 文件。
  4. X.php 类是另一个特定于任务的类。

现在来看通用脚本,它将使用所有 4 个类。所以我不明白哪个类将扩展另一个类

A.php 和 B.php 没有关系

但是 x.php 必须使用所有 3 个类 core.php、A.php 和 B.php。

目前我所做的,我为核心类设计了一个接口,x.php扩展了核心类并实现了接口。我将 A.php 和 B.php 设计为静态类。

请指导

【问题讨论】:

    标签: php oop class


    【解决方案1】:

    你不必必须 extend 类,如果它们彼此无关。您可以简单地在另一个类中使用一个类,而这两个类没有任何关系继承或接口方式。

    你可以这样组织它:

    • class Common 是您的基类,每个类都继承自它并包含所有类需要的公共代码,例如用于日志记录或数据库访问的代码。
    • class A extends Common 专门用于一些与 CSV 相关的任务。这个类可能会也可能不会自己做任何事情。
    • class B extends A,更专注于一些涉及 CSV 的特定任务。
    • class X extends Common 又是其他一些任务。

    一般来说,如果一个类的功能几乎相同,但更专业或不同,extend 是一个通用基类。如果一个类与另一个类没有任何共同之处,只需将它们设为独立类即可。使用interfaces 表示多态性;听起来这不是你现在需要的。

    【讨论】:

      【解决方案2】:

      这听起来像是基本的依赖管理。我不明白你为什么要明确地扩展任何东西?

      您可能应该做的是注入所需的依赖项。在使用它所依赖的对象实例化 X 之前,分别实例化 CoreAB

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-27
        • 2012-07-31
        • 2013-02-06
        • 2017-01-09
        相关资源
        最近更新 更多