创建类范围(全局)可访问对象

时间:2015-09-08 14:40:15

标签: php

是否可以声明一个对象并在整个班级中使用该对象?

我正在尝试的示例,下面不起作用:

Class food{
     private $need;

     public function __construct()
     {
        $this->$need = new Something();
     }

     public function some_function()
     {
        $this->$need->some_method();
     }
}

每次尝试都以$need为空值结束。 感觉我在这里遗漏了一些非常基本的东西......

PHP版本是5.3

更多信息

`$need = new Something($this->method) // this object has a callback `

这可能与它有关吗?

3 个答案:

答案 0 :(得分:1)

您错过$this,用于指代您正在使用的课程实例

Class food{
     private $need;

     public function __construct()
     {
        $this->need = new Something();
     }

     public function some_function()
     {
        $this->need->some_method();
     }
}

答案 1 :(得分:0)

此代码有效,所以此代码与您的代码有何区别?我假设您实际上已经声明了Something类,或者至少将其包含在您的代码中?

Class Something
{

     public function __construct()
     {
        echo 'Something() got constructed'.PHP_EOL;
     }

    public function some_method()
    {
        echo 'Something().some_method() got run'.PHP_EOL;
    }
}


Class food{
     private $need;

     public function __construct()
     {
        $this->need = new Something();
     }

     public function some_function()
     {
        $this->need->some_method();
     }
}


$o = new food();
$o->some_function();

答案 2 :(得分:0)

通过传递回调网址vs $this->method

的字符串来解决问题