2012-08-10 23 views
0

我想定义一个全局对象变量,我可以在我的控制器中的几个函数中使用它,ItemsCodeigniter/PHP为构造函数中的变量赋值

这里是我的代码无法正常工作:

class Items extends CI_Controller { 

private $varname; 

function Items(){ 
    parent::__construct(); 
    $this->load->model('items_model'); 
    $folder_id=416; 
    $this->varname=$this->items_model->getFilesById($folder_id); 
} 

function index(){ 
    var_dump($this->varname);  
} 

} 

所以$this->varname没有证明,当我去到URL的工作:localhost/items/index打印输出中是这样的:

array(0) { } 

回答

1

根据在您的PHP版本上,可能不会调用构造函数。尝试改变

function Items(){ 

function __construct(){ 

,看看是否能解决问题。

http://php.net/manual/en/language.oop5.decon.php从PHP 5.3.3开始,具有与名称空间类名的最后一个元素相同名称的方法将不再被视为构造函数。此更改不会影响非命名空间类。

这可能是什么导致你的问题。

+0

- @格雷格感谢,我使用PHP 5.3.1,不幸的是,这并没有改变这个问题,它可能是一些Codeigniter怪异的东西,可能有其他方式吗?我是否必须使用'$ this'关键字使其成为全局变量? – 2012-08-10 18:13:05

+0

您必须使用'$ this->'来引用该实例的'files'变量。文件在哪里申报? – gcochard 2012-08-10 18:16:34

+0

'文件'没有在任何地方声明。我想我可以将'files'分配给我检索的'items_model'数据。我不需要它被称为'文件'。只要我可以在整个班级中把这个变量称为它就可以是任何东西。 – 2012-08-10 18:20:21