未定义的变量尝试获取非对象元素类的属性

时间:2015-03-12 14:41:09

标签: php class elements

我在php中遇到了一些麻烦

class one{
     public $value;
}

呼叫

$workone = new one();

第二课

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

我收到此错误:

  

未定义的变量:第x行的/ xxx / xxxx / xxx中的workone

     

尝试在第x行的/ xxx / xxxx / xxx中获取非对象的属性

4 个答案:

答案 0 :(得分:0)

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

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

希望这有助于你

答案 1 :(得分:0)

如果您在代码下实现,则可以使用继承,第一类中的属性$value将包含myValue

class one {
  protected $value;
}

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

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

答案 2 :(得分:0)

我将如何做到这一点。

使用依赖注入!

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();

答案 3 :(得分:0)

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

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

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

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

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