AndreFontaine
AndreFontaine

Reputation: 15

CodeIgniter use a global session variable from contructor

I need to use a session information in various functions of my controller, but I can't initialize it in the constructor, because I get an error. Message: Undefined property: Soporte::$session

class Soporte extends MY_Controller {

  function __construct(){
      parent::__construct( $module, $functionality );
  }

  public function actualizarSolicitud( $id_solicitud ){

     $session_data = $this->session->userdata('session_user');
     $user = $session_data['usuario'];
     ...
  }

  public function adminHistorico(){     

     $session_data = $this->session->userdata('session_user');
     $user     = $session_data['usuario'];        
     $config   = array();
     ...
  }

  ...

}

There's a way to initialize a global variable $user?

Upvotes: 0

Views: 945

Answers (1)

Robert Trzebiński
Robert Trzebiński

Reputation: 1357

Try like below, model is quite complicated so I'm not providing it's code, but you should get the point. Any questions let me know.

/**
 * This class is used for performing all read/write session operations
 * Native php session is utilized (MY_Session library)
 */
class SessionManager extends BaseLibrary {

    private $oUser;

    public function __construct() {
        parent::__construct();
        $this->CI->load->model('User');
    }

    public function setUser(User $oUser) {
        $this->CI->session->set_userdata('userId', $oUser->getId());
    }

    public function getUser() {
        if ($this->oUser === null) {
            $this->oUser = new User();
            if ($this->CI->session->userdata('userId')) {
                $this->oUser->setId($this->CI->session->userdata('userId'));
            }
        }

        return $this->oUser;
    }

    public function logout() {
        $this->CI->session->set_userdata('userId', NULL);
    }

}

Upvotes: 1

Related Questions