在codeigniter中声明类级变量

时间:2011-07-19 12:27:01

标签: codeigniter variables declaration

我是CI的新手,我想做的是拥有一个类级变量(例如一个数组)。但看起来CI尽管吹嘘不高,却不支持这一功能。用户指南中未提及任何相关内容。有一个称为私有函数和变量的标题,但文本似乎对变量保持沉默。

我希望有类似的东西:

class OrderStats extends CI_Controller {

protected $arr_CoreCountry = ('0'=>'uk', '1'=>'us'); 

public function __construct()
   {

        parent::__construct();
        // Your own constructor code

   }

   public function index()
{

    $this->load->model('orders', '', TRUE);
    //$data['result'] = $this->Testmodel->get_entries();
    $data['result'] = $this->Testmodel->get_reports();
    $this->load->view('test', $data);

}

public function getOrderStats()
{       
            $this->load->model('Orderstatsmodel', '', TRUE);

            //$data['result'] = $this->Testmodel->get_entries();
            foreach ($arr_CoreCountry as $key => $value)
            {
                $data['result'] = $this->Orderstatsmodel->get_orderStats($key);
            }
  //                $data['result'] = $this->Orderstatsmodel->get_orderStats(0);
            $this->load->view('orderstats', $data);

}

请记住,当我在这篇文章中声明$ arr_CoreCountry变量时,我经常会看到语法错误消息。 当我把它放在任何函数内部时,当然,它超出了范围,我不断得到一个错误消息,$ arr_CoreCountry是一个未定义的变量。 所以问题是我在哪里定义它?

由于来自codeigniter的这个消息,因为我的一半时间被浪费了,所以期待快速回复。

3 个答案:

答案 0 :(得分:9)

这应该有效:

  

类OrderStats扩展了CI_Controller {

    protected $arr_CoreCountry = array('0'=>'uk', '1'=>'us'); 

    public function getOrderStats()
    {       
        $this->load->model('Orderstatsmodel', '', TRUE);

        //$data['result'] = $this->Testmodel->get_entries();
        foreach ($this->arr_CoreCountry as $key => $value)
        // etc
     

}

您省略了原始代码中的$this->

修改 这是我的测试代码〜

class Testing extends CI_Controller {

    protected $foo = array('test'=>'foo', 'bar'=>'baz');

    function index() {
        foreach($this->foo as $k => $v) {
            echo $k . ' = ' . $v . '<br />';
        }
    }
}

// outputs:
test = foo
bar = baz

也许您可以发布语法错误,因为它们似乎在原始帖子中缺失。

答案 1 :(得分:0)

您有语法数组声明错误。请尝试声明这样的数组:

protected $arr_CoreCountry = array('0'=>'uk', '1'=>'us'); 

请查看此网站以获取阵列手册:http://php.net/manual/en/language.types.array.php

答案 2 :(得分:-2)

我自己解决了这个问题。

我改变了两件事

protected $arr_CoreCountry = ('0'=>'uk', '1'=>'us');

已更改为

var $arr_CoreCountry = array(0=>'se', 1=>'fi',2=>'de'); 

foreach ($arr_CoreCountry as $key => $value)

已更改为

foreach ($this->arr_CoreCountry as $key => $value)

我错过了这个,但是当我把它放在那里时,它仍然没有用。当我将protected更改为var时,它可以工作。

感谢大家的投入......