php - tutorial - que son los helpers codeigniter
¿Puedes acceder a un modelo desde otro modelo en CodeIgniter? (4)
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 forma de acceder a este modelo de autenticación desde otro modelo. ¿Hay alguna manera de acceder a un modelo desde otro modo, o una forma mejor de manejar la autenticación dentro de CodeIgniter?
En general, no desea crear objetos dentro de un objeto. Ese es un mal hábito, en cambio, escriba una API clara e inyecte un modelo en su modelo.
<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
No maneje la autenticación en su modelo. Solo use modelos para interactuar con su base de datos, o ldap o lo que sea.
Creé una biblioteca Auth que uso para administrar autenticación y autorización. Puede acceder a una biblioteca como esta desde sus controladores.
Parece que puedes cargar modelos dentro de los modelos, aunque probablemente deberías resolverlo de otra manera. Vea los 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 Till está diciendo acerca de que no deberías crear objetos dentro de objetos. Por supuesto que deberías! Enviar objetos como argumentos parece mucho menos claro para mí.
Ahora es posible cargar un modelo dentro de un modelo con el nuevo CodeIgniter.