2013-12-12 2 views
1

У меня есть следующий фрагмент кода в контроллере модуля CodeIgniter:Global вары в CodeIgniter модуле класса неопределенными

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

Это не объясняет, почему глобальные vars в codeigniter не работают, как глобальные vars в php vanilla PHP, но я буду устанавливать это как принятый ответ, поскольку он дает мне способ делать то, что я хотел и также является ванильным PHP. – xaddict

0

Вы можете установить переменные таким образом:

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

где $global_variables_array ассоциативный массив ключей пара значений, описание: -

Эта функция принимает ассоциативный массив в качестве входных данных и генерирует переменные используя функцию извлечения PHP. Эта функция дает тот же результат, что и второй параметр функции $ this-> load-> view() выше. Причина, по которой вы можете использовать эту функцию независимо, заключается в том, что вы хотите установить некоторые глобальные переменные в конструкторе вашего контроллера и сделать их доступными в любом файле просмотра, загруженном из любой функции. Вы можете иметь несколько вызовов этой функции. Данные получают кэширование и объединяются в один массив для преобразования в переменные.

here is link

 Смежные вопросы

  • Нет связанных вопросов^_^