Глобальные перемены в CodeIgniter - PullRequest
0 голосов
/ 07 марта 2012

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

Установка его в constants.php не работает, так как "$ this" там не распознается.

Основная причина, по которой я этого хочу, заключается в том, что я не люблю использовать сессии (я считаю, что писать строки вроде $this->session->userdata('session_name') не очень практично, писать что-то вроде CURR_UID проще и лучше, и читать)

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Это возможно, но это не тот способ, которым был разработан Codeigniter. Сеансы - действительно место для такого рода вещей (а именно, вещей, которые сохраняются от одного просмотра страницы к другому), но вы можете обернуть вызовы сеанса в библиотеке ради красоты, если хотите. Примерно так:

// in libraries/User.php
class User {

  protected $ci;

  public function __construct() {
    $this->ci = &get_instance();
  }

  public function id() {
    return $this->ci->session->userdata('user_id');
  }

  // etc, etc.
}

После того, как вы написали еще несколько помощников, таких как id(), вы можете использовать их для доступа к соответствующим переменным в другом месте вашего приложения:

$this->load->library('user');
echo 'Current user ID is: ' . $this->user->id();
1 голос
/ 07 марта 2012

В этом случае вы можете создать class My_Controller extends CI_Controller.Сортируйте все функциональные возможности, которые вам понадобятся, прежде чем загружать какую-либо конкретную функциональность контроллера.

Затем любой последующий класс, который вы создадите, вы можете сделать: class Whatever extends My_Controller.

Редактировать: я забылупомяните, что вы должны поместить класс My_Controller в папку Application> Core.

...