繁体   English   中英

PHP OOP类结构

[英]PHP OOP class structuring

我想知道在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(); 然后可以在需要时调用子类,例如$example->User->getName();

我知道可以用很多不同的方法来处理,但是我想将类与组织分开,我计划有很多子类需要从该主类中获取信息,并且想知道是否有办法它们可以以这种方式链接。

编辑:我不想只调用用户调用来获取函数的原因是,我最终将拥有15个以上的类来分别处理返回的数据,并且想知道是否有比为每个对象创建一个新对象更好的方法,如果我要使用它。

“ Main”不是“ User”,因此我会说这种子类化是一个糟糕的选择。

我可能会改为考虑注射。

class MainDataHandler {
  //...
}

class User {

  private $main;

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

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

注入的好处是您的类可以独立工作和测试,而无需依赖另一个类来完成工作。 同样,如果“ Main”发生了变化,那么您的User类也不取决于新Main的工作方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM