将数据加载到从基类php派生的对象中

时间:2012-12-20 16:59:55

标签: php interface abstract-class

我已经开始在PHP中编写一个电子商务类库作为抽象类,目的是强制实现具体类以使用load()方法将数据加载到对象中:

abstract Cart {
    abstract function load();
    // other stuff ...
}

class MyCart extends Cart {
    public function load()
    {
        // pull in data from anywhere ...
    }
}

我想知道这是否是正确的方法......

我想:

  • 保持核心库不被触及。
  • 保持简单,我们打算重新使用此代码,其他人将实施它。

我听说有适配器和东西,虽然我还没有看过这些(还有)..有人能指出我正确的方向吗?

干杯, 约翰。

1 个答案:

答案 0 :(得分:2)

我建议不要使用抽象类,而是建议使用接口来实现此目的:

interface Cart {
  public function load();
  // other stuff ...
}

class MyCart implements Cart {
  public function load()
  {
    // pull in data from anywhere ...
  }
}

接口用于描述派生类的结构,如果要添加所有提供相同方法的不同类,这是最好的方法。另一个优点是类只能扩展一个父类(即Cart类),但可以实现多个接口。 阅读更多关于interfaces on PHP.net的内容,这里有一段摘录,强调了为什么我认为这种模式符合您的要求:

  

对象接口允许您创建代码,该代码指定类必须实现哪些方法,而不必定义如何处理这些方法。