我正在努力寻找一种在类之间传递数据的正确方法,这些类不直接相互调用,并且仅通过父类相关(我现在使用它,但我认为这是一种肮脏的解决方法,而不是解决方案附近的任何东西)。
我有 3 个类都能够读取输入和写入输出,并且根据配置,我将一个设置为读取,另一个设置为写入。它甚至可能是同一个类,它们都共享一个父类,但它们始终是从控制器类调用的两个独立实例。
目前我使用这种功能:
class daddy {
public static $data;
}
class son extends daddy {
public function setData() {
parent::$data = "candy";
}
}
class daughter extends daddy {
public function getData() {
echo parent::$data;
}
}
while($processALineFromConfig)
$son = new son;
$son->setData();
$daughter = new daughter;
$daughter->getData();
daddy::$data = null; //reset the data, in the actual code $daughter does that in parent::
}
这些类的实例化在一个循环中运行,因此我总是需要在 $daughter 接收到它们之后重置数据,因为否则它会留在那里再次通过循环。
我绝对确定这不是应该如何使用类继承,但是我正在努力寻找一个真正的解决方案。数据应该存储在调用这些类的控制器中才有意义,而不是父类,但是我已经在 setter 和 getter 函数中使用了返回值,并且我没有通过引用传递变量来将其存储到这些函数中'因为我在那里有可选参数,我试图保持代码干净。
那么通过控制器传递数据的正确方法是什么?
谢谢!