我想知道这样的子类化结构是否可以在PHP中使用。如果这是一个副本,我道歉,因为我无法弄清楚这个过程将被调用什么,我唯一能找到的是一个没有答案的封闭问题。
我正在处理多个班级。例如,我们会说Main
和User
。
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个以上的类来处理返回的数据,并且不知道是否有更好的方法来制作新的如果我想使用它,每个对象。
答案 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的工作方式。