Php 从一个函数到另一个函数获取对象
我得到了一个函数,它从数据库中获取所有标签并将它们放入一个数组中,但是如果我将对象带到另一个函数中,它将为NULLPhp 从一个函数到另一个函数获取对象,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)){ $
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
,等等。