2010-05-12 13 views

Respuesta

52

Ok, así que todo en CodeIgniter corre a través de la variable de $this súper mágica. Esto solo funciona para clases, ya que $this básicamente define la clase actual.

Su controlador es una clase, por lo que $ esto es que hay, que le permite hacer $this->load->model('whatever');

En los modelos, que también se utiliza una clase. Es ligeramente diferente aquí, ya que $this solo contiene elementos útiles a medida que se extiende desde el Modelo. Aún así, $this sigue siendo válido.

Cuando está utilizando un ayudante o una biblioteca, es necesario encontrar que "ejemplo" o $this equivalente.

$ci =& get_instance(); 

... hace $ci contienen exactamente el mismo material/código/utilidad como $this, a pesar de que usted no está en una clase, o no en una clase que hereda.

Esa es una explicación para el total de principiantes después de 2 pintas, por lo que es incorrecta o está bien. ;-)

+2

2 pintas, ¿eh? Entonces, ¿cuál es la utilidad de una biblioteca/ayudante? ¿Por qué no usar modelos? –

+2

Por supuesto, dado que todo es una clase PHP, PUEDES poner lo que quieras donde quieras. En términos generales, en CodeIgniter se desglosa como "interacción de base de datos/lógica de negocios" = modelos, las funciones simples van en ayudantes y las clases generales son bibliotecas. –

10

Es una implementación del singleton pattern. Básicamente, solo hay una instancia de la clase en cuestión, que está diseñada para ser accesible globalmente. El método get_instance es estático y proporciona una forma de acceder a la instancia desde cualquier parte de su código.

+1

No es suficiente. ¡Soy un SUPER NOOB! :) –

+5

@Kevin: En ese caso, recomiendo que empiece a leer sobre programación orientada a objetos (OOP) antes de profundizar en un marco que se basa en él. –

+2

¡Lo haré, lo haré! –

Cuestiones relacionadas