Php 从一个函数到另一个函数获取对象

Php 从一个函数到另一个函数获取对象,php,arrays,Php,Arrays,我得到了一个函数,它从数据库中获取所有标签并将它们放入一个数组中,但是如果我将对象带到另一个函数中,它将为NULL private static $labels='blaat'; public function loadDatabaseLabels(){ $res=DB::query("SELECT * FROM labels"); $label_array=array(); while($row=mysqli_fetch_assoc($res)){ $

我得到了一个函数,它从数据库中获取所有标签并将它们放入一个数组中,但是如果我将对象带到另一个函数中,它将为NULL

private static $labels='blaat';

public function loadDatabaseLabels(){
    $res=DB::query("SELECT * FROM labels");
    $label_array=array();
    while($row=mysqli_fetch_assoc($res)){
        $label_array[$row['indicator']]=$row['text'];
    }
    $labels = new label();
    $labels->labels=$label_array;
}

public function getLabel($indicator){
    var_dump($labels->label);
}

这似乎是一个PHP类的代码片段。如果将变量设置为
$labels
,则该变量位于本地方法范围内,在方法之外的任何对象都看不到它,并且在方法完成后丢失

要在对象实例上设置变量,请使用
$this->labels=…
var\u dump($this->labels)
,或者在声明为静态时,改用
self::$labels


如果不是这样的话,那么就忘记
静态公私
关键字。函数仍然看不到它们之外的任何东西,所以你有一个丑陋的选择,在方法前面添加
全局$labels
(karma会为此向你报复),或者传递
$labels
,但将这两个方法都引用为
和$labels

这里有一些问题。首先,
$labels
声明为
private static
-这意味着您可以使用
self::$labels
访问它:

// set like this:
self::$labels->labels = $labels_array;

public function getLabel($indicator){
    var_dump(self::$labels->label);
}

其次,您没有设置
self::$lables->label
,而是设置
self::$labels->labels
(注意复数标签)。因此,在上面的函数中,
var\u dump
正在访问尚未设置的内容。

将$labels作为参数传递给getLabel(),否则它将不在范围内。。。。这确实是一个PHP101问题-如果我使用this,我会得到以下错误:当不在对象上下文中时使用$this将函数定义为
public
意味着它存在于类中-否则您将错误地使用
static
public
,等等。