2011-07-09 13 views
6

Tengo problemas para entender cómo funciona la carga de los identificadores de código.¿Cómo funciona la carga de codeigniter?

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, puede 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 cargué el modelo, ¿puedo usar la validación del formulario 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 cargo un modelo o ayudante en lugar de una biblioteca? Digamos que quiero usar un modelo dentro de otro modelo, ¿dónde lo cargo?

Así que la pregunta básica, ¿cuánto tiempo o más bien qué tan lejos va la carga antes de que deba volver a cargar?

Respuesta

4

La carga, como @yi_H señaló correctamente, tiene una duración de toda la vida útil script actual. ES DECIR. cuando llama 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 ocurre porque el controlador se inicializa en cada solicitud, por lo que cuando se 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 al index.php/mycontroller/method2, y también requiere el helper html, pero no lo cargó introdujo el método, obtendrá un error de función no encontrado.

Así que, básicamente, si usted quiere tener el mismo recurso siempre disponible que tiene 3 opciones:

  1. carga automática en application/config/autoloader.php
  2. carga que en cada solicitud, es decir en el interior cada método que usará ese recurso
  3. lo puso dentro del constructor del controlador, por lo que siempre se inicializa en cada solicitud.

Es más o menos lo mismo que la carga automática, excepto que puede trabajar sólo para el controlador de la que se pone el constructor en, por lo que obtener un beneficio cuando usted no quiere que algo se va a cargar en cada controlador (como cuando usas carga automática) pero solo en unos pocos. Para utilizar este último método, recuerde que debe llamar al constructor PADRES dentro de su controlador (como se hace normalmente con los modelos):

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

Ahh, ahora lo entiendo. Muy claro, muchas gracias! :RE – Vejto

-1

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

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

Sobre todo la otra pregunta, creo que se debe cargar lo que necesita para cada controlador.

+0

No es mi pregunta, pero todavía gracias por intentarlo!;) – Vejto

0

permanece allí hasta el final del tiempo (es decir, cuando la secuencia de comandos termina y el universo se colapsa)

+0

Okey, si ese es el caso, ¿por qué no debería cargar todo lo que sé que voy a usar? Porque no tendría sentido si carga automática recarga todo todo el tiempo. ¿O extraño que haya entendido el significado del guión? ¿El script finaliza cuando el usuario abandona mi sitio web o cuando una página termina de cargarse? – Vejto

+0

Es cuando finaliza la generación de la página. Sry por la respuesta esotérica :) –

+0

Vejto: Para cada próxima solicitud, el script comenzará y finalizará. – hakre

Cuestiones relacionadas