未定义的变量试图获取 属性 个非对象元素 class

Undefined variable Trying to get property of non-object elements class

我在 php

中使用 class 遇到了一些问题
class one{
     public $value;
}

通话

$workone = new one();

第二个Class

class two{
     function working(){
        $value = $workone->value;
     }
}

我收到此错误:

Undefined variable: workone in /xxx/xxxx/xxx on line x

Trying to get property of non-object in /xxx/xxxx/xxx on line x

您需要使用全局关键字。使用下面的代码

class two{ 
function working(){ 
global $workone;
$value = $workone->value; 
} 
}

希望对您有所帮助

您可以继承 属性 $value in class 如果您在下面的代码中实现,其中一个将包含 myValue

class one {
  protected $value;
}

class two extends one {
  public function working($value){
     $this->value = $value;
  }
}

$classTwo = new two();
$classTwo->working('myValue');

这就是我的做法。

通过使用依赖注入!

class one{
     public $value;
}
class two{
     private $workone;
     function __construct(One $workone){
        $this->workone = $workone;
     }
     function working(){
        $value = $this->workone->value;
     }
}

$workone = new one();
$worktwo = new two($workone);
$worktwo->working();

您应该阅读范围!您正在尝试访问在 class two 的方法 working 之外定义的变量,并且此变量未定义为全局变量。

但有时,将变量声明为全局变量会给您带来更多问题。所以我的建议是将变量作为参数传递给你的方法 working...

class two{
      function working($workone){
              $value = $workone->value;
      }
}

或者在符合您需要的方法中定义您的 $workone 变量。比获得解决方案更重要的是理解解决方案。请阅读有关范围的更多信息:

http://php.net/manual/en/language.variables.scope.php