2013-12-12 364 views
1

我有一个笨模块控制器下面的一段代码:全局变量未定义

class MyClass extends MX_Controller{ 
    public $description = "index"; 
    public function index(){ 
     global $description; 
     echo $description; 
    } 
} 

根据正常PHP规则和PHP文档,这应该工作。但是,它没有。

如果我遗漏了global $description,我得到一个关于变量undefined的通知,但是它已经到位了,它似乎没有返回任何东西。

为什么不global variables在这种情况下工作?

+0

全局关闭工作,因为你是在类的范围内,你使用的是什么版本的PHP? – tomexsans

+0

一个办法 - 你可以在配置文件中设置全局变量,并且可以使用这里曾经需要。 – Suleman

+0

我使用PHP 5.5 – xaddict

回答

0

你应该做这样的,而不是使用全局。 这将 所以你需要$this

class MyClass extends MX_Controller{ 
    public $description = "index"; 
    public function index(){ 
     echo $this->description; 
    } 
} 
+0

它没有解释为什么笨全局变量不喜欢香草PHP全局变量的工作,但我将其设置为接受的答案,因为它确实给我一个办法做到我想要的东西也是香草PHP。 – xaddict

0

可以以这种方式设置的变量:

$this->load->vars($global_variables_array); 

其中$global_variables_array是一个关联键值对阵列,说明是: -

这个函数有一个关联数组作为输入并产生变量使用PHP提取功能。此功能将产生相同的结果使用上述$这 - >负载>视图()函数的第二个参数。你可能想单独使用此功能的原因是,如果你想设置一些全局变量在控制器的构造函数,并让他们从任何函数加载的任何视图文件变得可用。您可以多次调用此函数。数据被缓存并合并到一个数组中以转换为变量。

here is link