父类变量的PHP类引用

时间:2016-04-25 20:35:41

标签: php oop subclass

我正在构建一个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变量,但我真的不想将这些变量传递到每个子类中,然后将它们传回去。我希望当我更新子类中的变量时,它会更新我所有类中的任何地方....有点像全局变量......但我知道这不是一个好主意。

其他人如何阻止将变量传递到类的兔子踪迹中。

在本课程中我

1 个答案:

答案 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直接传递给构造函数。