Pregunta

Estoy escribiendo una aplicación web usando CodeIgniter que requiere autenticación.Creé un modelo que maneja toda mi autenticación.Sin embargo, no puedo encontrar una manera de acceder a este modelo de autenticación desde otro modelo.¿Existe alguna manera de acceder a un modelo desde otro modo o una mejor manera de manejar la autenticación dentro de CodeIgniter?

¿Fue útil?

Solución

En general, no deseas crear objetos dentro de un objeto.Ese es un mal hábito; en su lugar, escriba una API clara e inyecte un modelo en su modelo.

<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>

Otros consejos

Parece que puedes cargar modelos dentro de modelos, aunque probablemente deberías resolver esto de otra manera.Ver Foros de CodeIgniter para una discusión.

class SomeModel extends Model
{
  function doSomething($foo)
  {
    $CI =& get_instance();
    $CI->load->model('SomeOtherModel','NiceName',true);

    // use $CI instead of $this to query the other models
    $CI->NiceName->doSomethingElse();
  }
}

Además, no entiendo lo que dice Till acerca de que no se deben crear objetos dentro de objetos.¡Por supuesto que deberías!Enviar objetos como argumentos me parece mucho menos claro.

No maneje la autenticación en su modelo.Utilice únicamente modelos para interactuar con su base de datos, ldap o lo que sea.

Creé una biblioteca de autenticación que uso para administrar la autenticación y la autorización.Puede acceder a una biblioteca como esta desde sus controladores.

Ahora es posible cargar un modelo dentro de un modelo con el nuevo CodeIgniter.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top