объявление переменных уровня класса в codeigniter - PullRequest
1 голос
/ 19 июля 2011

Я новичок в 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 является неопределенной переменной.Итак, вопрос в том, где я могу это определить?

Ожидайте быстрого ответа, так как половина моего дня была потрачена впустую только из-за этого s *** из codeigniter.

Ответы [ 3 ]

9 голосов
/ 19 июля 2011

Это должно работать:

класс 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

}

вы опускаете $this-> в своем оригиналеcode.

Edit Вот мой тестовый код ~

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

возможно, вы можете опубликовать свои синтаксические ошибки, поскольку они отсутствуют в исходном сообщении.

0 голосов
/ 20 июля 2011

Я решил проблему сам.

Есть две вещи, которые я изменил

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)

Мне не хватало $ этого, но когда я положил его туда, оно все еще не работало. Когда я изменил защищенный на var, это сработало.

Спасибо всем за ваш вклад ...

0 голосов
/ 19 июля 2011

У вас ошибка объявления массива синтаксиса.Пожалуйста, попробуйте объявить массив следующим образом:

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

Пожалуйста, проверьте этот сайт для руководства по массиву: http://php.net/manual/en/language.types.array.php

...