PHP Class 引用 Parent 变量
PHP Class Reference to Parent Variable
我正在构建一个 API 服务并有一个 parent class:
classAPI {
public responseCode = "";
public responseMessageLog ="";
function run{
// here I call my user auth class
$oUser = new classUser(...);
}
}
在我的 classUser 中,我做了一堆东西,然后写了一堆变量:responseMessageLog(这是脚本所在位置的 运行 日志)和 responseCode(设置为0 或 1 或其他取决于成功或失败或警告)。
我需要从我的用户 class 和我的 parent API class 中访问我的 responseCode 和 responseMessageLog 变量,但我真的不想成为将这些变量传递给每个 child class,然后将它们传递回去。我希望当我更新 child class 中的变量时,它会在我所有 class 的任何地方更新......有点像全局变量......但我知道那不是一个好主意。
其他人如何停止沿着 classes 的兔子踪迹传递变量。
在这个class我
传递依赖项并不是您想要避免的兔子洞——它可以生成更可测试的代码。但是,你不需要每个属性传递,你可以传递父对象。
在您的情况下,只需将 classAPI
对象传递给 classUser
的构造函数,然后在构造函数中将其分配给 属性。 classAPI
属性是 public,因此您可以在 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;
}
}
添加的注释:
- 如果它出现在另一个答案中,请不要使用静态属性来做你想做的事情。
- 将您的 class 名字大写。
- 在生产代码中,我可能会在
ClasUser
中添加一个初始化函数,而不是将 ClassAPI
直接传递给构造函数。
我正在构建一个 API 服务并有一个 parent class:
classAPI {
public responseCode = "";
public responseMessageLog ="";
function run{
// here I call my user auth class
$oUser = new classUser(...);
}
}
在我的 classUser 中,我做了一堆东西,然后写了一堆变量:responseMessageLog(这是脚本所在位置的 运行 日志)和 responseCode(设置为0 或 1 或其他取决于成功或失败或警告)。
我需要从我的用户 class 和我的 parent API class 中访问我的 responseCode 和 responseMessageLog 变量,但我真的不想成为将这些变量传递给每个 child class,然后将它们传递回去。我希望当我更新 child class 中的变量时,它会在我所有 class 的任何地方更新......有点像全局变量......但我知道那不是一个好主意。
其他人如何停止沿着 classes 的兔子踪迹传递变量。
在这个class我
传递依赖项并不是您想要避免的兔子洞——它可以生成更可测试的代码。但是,你不需要每个属性传递,你可以传递父对象。
在您的情况下,只需将 classAPI
对象传递给 classUser
的构造函数,然后在构造函数中将其分配给 属性。 classAPI
属性是 public,因此您可以在 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;
}
}
添加的注释:
- 如果它出现在另一个答案中,请不要使用静态属性来做你想做的事情。
- 将您的 class 名字大写。
- 在生产代码中,我可能会在
ClasUser
中添加一个初始化函数,而不是将ClassAPI
直接传递给构造函数。