我正在构建一个API服务并拥有一个父类:
classAPI {
public responseCode = "";
public responseMessageLog ="";
function run{
// here I call my user auth class
$oUser = new classUser(...);
}
}
在我的classUser中,我做了很多东西,然后写了一堆变量:responseMessageLog(运行脚本所在的日志)和responseCode(设置为0或1或其他任何取决于成功或失败或警告)。
我需要从我的User类和我的父API类中访问我的responseCode和responseMessageLog变量,但我真的不想将这些变量传递到每个子类中,然后将它们传回去。我希望当我更新子类中的变量时,它会更新我所有类中的任何地方....有点像全局变量......但我知道这不是一个好主意。
其他人如何阻止将变量传递到类的兔子踪迹中。
在本课程中我
答案 0 :(得分:1)
传递依赖关系并不是一个你想要避免的兔子洞 - 它会产生更多可测试的代码。但是,您不需要传递每个属性,您可以传递父对象。
在您的情况下,只需将classAPI
对象传递给classUser
的构造函数,然后在构造函数中将其分配给property。 classAPI
属性是公开的,因此您可以在classUser
。
ClassAPI {
public $responseCode = "";
public $responseMessageLog ="";
public function run{
// here I call my user auth class
$oUser = new ClassUser($this, ...);
}
}
ClassUser {
public $myClassApi = null;
public function __construct(ClassAPI $myClassApi) {
$this->myClassApi = $myClassApi;
}
public function someFunction() {
echo $this->myClassApi->responseCode;
}
}
添加了备注:
ClasUser
中添加初始化函数,而不是将ClassAPI
直接传递给构造函数。