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

$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  $CI

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!!!

Entradas populares de este blog

"php" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

Laravel y MercadoPago SDK

Dompdf image not found or type unknown