Simple explicación sobre get_instance() CODEIGNITER
En algunos casos queremos escribir nuestras propias clases separadas de nuestros controladores pero cuando esto pasa perdemos algunos recursos que Codeigniter nos ofrece por medio de la variable $this, sin embargo no está todo perdido ya que es posible gracias a la función auxiliar get_instance() la cual retorna el SuperObjeto Codeigniter.
Ejemplo práctico de la situación que comento
Normalmente desde mi controlador puedo llamar a cualquier metodo disponible de la siguiente forma
Pero, ¿qué pasa cuando creo un helper o una clase que igual necesita acceder a estos metodos? simplemente la variable $this no puede hacer referencia a ningun constructor porque no existe.
Solución sencilla, la función get_instance() nos ayuda con esto pues sirve para acceder a una instancia del superobjeto CodeIgniter, con la que podremos recuperar o usar todos los recursos nativos de CodeIgniter
Entonces ahora accedemos a los metodos de la siguiente forma_
Si esto último te sonó raro puedes leer esto para comprender mejor el ámbito de una variable
Fuente https://www.codeigniter.com/userguide3/general/ancillary_classes.html
Happy coding!!!
Ejemplo práctico de la situación que comento
Normalmente desde mi controlador puedo llamar a cualquier metodo disponible de la siguiente forma
$this->load->helper('url'); $this->load->library('session'); $this->config->item('base_url');
Pero, ¿qué pasa cuando creo un helper o una clase que igual necesita acceder a estos metodos? simplemente la variable $this no puede hacer referencia a ningun constructor porque no existe.
Solución sencilla, la función get_instance() nos ayuda con esto pues sirve para acceder a una instancia del superobjeto CodeIgniter, con la que podremos recuperar o usar todos los recursos nativos de CodeIgniter
Entonces ahora accedemos a los metodos de la siguiente forma_
$CI =& get_instance(); $CI->load->helper('url'); $CI->load->library('session'); $CI->config->item('base_url');
Cuidado al invocar la misma función desde distintas clases es mejor definir ámbito privado o protegido de variable $CISi esto último te sonó raro puedes leer esto para comprender mejor el ámbito de una variable
Fuente https://www.codeigniter.com/userguide3/general/ancillary_classes.html
Happy coding!!!