2012-04-17 3 views
0

Я храню язык пользователя в сессии, а затем я загружаю файл языка, как это:Глобальная сессия переменная

$language = $this->session->userdata('language'); 
$this->lang->load('form_validation', $language); 

Но его очень раздражает, когда я должен загрузить выше $language переменной в каждом контроллер, было бы лучше, если это будет глобальным переменным, так что я мог бы использовать только:

$this->lang->load('form_validation', $language); 
  • Где $language вар будет глобальным переменным.

Как я могу это сделать?

ответ

1

Если вы действительно желающих Однострочник то почему бы не просто сделать

$this->lang->load('form_validation', $this->session->userdata('language')); 

Что касается глобалов в общем-то, как правило, не очень хорошая практика, чтобы создавать их без необходимости. Причина в том, что глобальные переменные по природе могут быть доступны из любой точки мира, поэтому их можно обновлять из любого места, что может привести к затруднению поиска ошибок.

1

Я думаю, что лучший способ (или, по крайней мере, лучше, чем использование глобалов) было бы определить вспомогательную функцию где-нибудь в вашем коде (я не знаю, где это было бы в CodeIgniter), который загружал бы языковой файл для вы.

Но это действительно проблема?

+0

Ну, я не сказал, что это большая проблема, но это довольно раздражает, если мне нужно загрузить что-то, что можно определить глобально. Разве это не так? – Lucas

+1

На самом деле это не так. Обычно каждый стремится иметь менее глобальный материал, не более ... –

1

Вы можете поместить помощника в файл autoload.php;). Расположен в /application/config/autoload.php

Таким образом, определяя переменную в хелпере и помещаем помощник в массив автозагрузки ['helper'].

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