PHP OOP类结构

时间:2017-10-29 23:08:21

标签: php oop subclassing extending

我想知道这样的子类化结构是否可以在PHP中使用。如果这是一个副本,我道歉,因为我无法弄清楚这个过程将被调用什么,我唯一能找到的是一个没有答案的封闭问题。

我正在处理多个班级。例如,我们会说MainUser

Main类将包含所有启动代码。所以

class Main{
  //Setters for core variables and data needed to make calls
  ...
  protected function fetchInfo(){
      //Do Stuff to return info from other source(Curl calls in my case)
  }

}

User

class User extends Main{
    public function getName(){
        $data = $this->fetchInfo();
        return $data['name'];
    }
}

但不要把它放在我想去的地方。 $exampe1 = new Main(...);设置变量,$example2 = new User();调用子类来$example2->getName();是否有办法像$example = new Main();那样可以在需要时调用子类,如{ {1}}?

我知道有很多不同的方法可以处理,但我希望这些类可以分开进行组织,我计划有很多子类需要从主类中提取信息,并想知道是否存在是一种他们可以以这种方式联系的方式。

编辑:我不想只是调用用户调用来获取函数的原因是我最终会有15个以上的类来处理返回的数据,并且不知道是否有更好的方法来制作新的如果我想使用它,每个对象。

1 个答案:

答案 0 :(得分:1)

A" Main"不是"用户"所以我想说这种类型的子类化是一个糟糕的选择。

我可能会考虑注射。

class MainDataHandler {
  //...
}

class User {

  private $main;

  public function __construct(MainDataHandler $main) {
    $this->main = $main;
  }

  public function getName() {
    return $this->main->getData('name');
  }
}

注入的好处是你的类可以独立工作和测试,而不依赖于另一个类来完成工作。如果" Main"永远改变你的用户类并不取决于新的Main的工作方式。