Syed
Syed

Reputation: 349

declaring class level variables in codeigniter

I am new to CI and what I want to do is to have a class level variable (which e.g is an array). But it seems like CI, despite all high bragging, doesn't support this feature. Nothing has been mentioned in the user guide about it. There is a heading called private functions and variables but the text has been seemingly kept silent regarding variables.

I want to have something like :

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);

}

Remember, when I declare $arr_CoreCountry variable at the place as it is in this post, I constantly see a syntax error message. When I place it some where inside any function then of course, it gets out of scope and I keep getting an error messag that $arr_CoreCountry is an undefined variable. So the question is where do I define it?

Expect a quick response as half of my day has been wasted just because of this s*** from codeigniter.

Upvotes: 1

Views: 18520

Answers (3)

Syed
Syed

Reputation: 349

I solved the problem myself.

There are two things which I changed

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

was changed to

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

and

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

was changed to

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

I was missing $this but when I put it there, it was still not working. When I changed protected to var, it worked.

Thanks everyone for your input...

Upvotes: -2

Ross
Ross

Reputation: 17987

This should work:

class OrderStats extends 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

}

you are omitting the $this-> in your original code.

Edit Here was my test code ~

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

perhaps you can post your syntax errors as they appear to be missing from your original post.

Upvotes: 9

Goran
Goran

Reputation: 3410

You have a syntax array declaration error. Please try to declare array like this:

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

Please check out this site for array manual: http://php.net/manual/en/language.types.array.php

Upvotes: 0

Related Questions