¿Cómo funciona la carga de codeigniter?

Estoy teniendo problemas para entender cómo funciona la carga de Codeigniters.

Bueno, primero tienes la carga automática que parece bastante directa, carga todo cada vez. Así que esto suena bien usar para las cosas que uso todo el tiempo.

Segundo, puedes cargar todo en línea. Pero aquí está mi pregunta: ¿cuánto tiempo permanece cargado?

Digamos que cargué la biblioteca de validación de formularios en el controlador, luego cargo el modelo, ¿puedo usar la validación de formularios en el modelo o tengo que volver a cargarlo? Continuando, digamos que cargo una vista y otro controlador, ¿puedo usar la validación de formulario? ¿O necesito cargar? Después de una redirección? ¿Qué tal si carga un modelo o ayudante en lugar de una biblioteca? Digamos que quiero usar un modelo dentro de otro modelo, ¿dónde lo cargo?

Entonces, la pregunta básica, ¿cuánto tiempo o más bien cuánto va la carga antes de que deba volver a cargar?

La carga, como correctamente señaló @yi_H, dura toda la duración actual del script. IE cuando llamas al método de un controlador, el recurso se carga. Si llama al mismo recurso dentro de otro método, ya no estará disponible.

Eso sucede porque el controlador se inicializa en cada solicitud, por lo que cuando accede a index.php/mycontroller/method1 el controlador se inicializa (puede habilitar registros y ver esto claramente). En su método carga, digamos, el helper html. Si luego accede a index.php/mycontroller/method2, y también requiere el html helper, pero no lo cargó introduciendo el método, obtendrá un error de función no encontrado.

Entonces, básicamente, si quiere tener el mismo recurso siempre disponible, tiene 3 opciones:

  1. autoalojalo en application / config / autoloader.php
  2. cargarlo en cada solicitud, es decir, dentro de cada método que usará ese recurso
  3. póngalo dentro del constructor del controlador, para que siempre se inicialice en cada solicitud.

Es más o menos lo mismo que carga automática, excepto que puede funcionar solo para el controlador en el que pones el constructor, para que obtengas un beneficio cuando no quieres que se cargue algo en CADA controlador (como cuando usas carga automática) pero solo en unos pocos. Para usar este último método, recuerde LLAMAR AL CONSTRUCTOR DE PADRES dentro de su controlador (como lo hace normalmente con los modelos):

 function __construct() { parent::__construct(); $this->load->library('whateveryouwant'); } 

Permanece allí hasta el final del tiempo (es decir, cuando termina el guión y el universo se colapsa)

Para cargar algo al escribir su propio modelo o ayudante, por ejemplo:

 $ci = get_instance(); $ci->load->library('user_agent'); $ci->load->database(); 

Sobre todas las demás preguntas, creo que deberías cargar lo que necesites para cada Controlador.