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?¿Se puede acceder a un modelo desde otro modelo en CodeIgniter?
Respuesta
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.
que crearon una biblioteca de autenticación que utilizo para gestionar la autenticación y autorización. Puede acceder a una biblioteca como esta desde sus controladores.
Siempre pongo mis implementaciones oauth dentro de un modelo, no me gusta quitar mis controladores con el código de autenticación –
creo un MY_controller y hago all oauth allí. – tomexsans
Parece puede cargar modelos dentro de los modelos, aunque probablemente debería resolver esto de otra manera. Ver CodeIgniter forums 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 está diciendo sobre Hasta que no se debe crear objetos dentro de objetos. Por supuesto que deberías! Enviar objetos como argumentos parece mucho menos claro para mí.
La queja es que hacerlo de esa manera crea innecesariamente una dependencia más fuerte entre los dos modelos. Cuando está probando, por ejemplo, es agradable poder darle a SomeModel una versión simulada de SomeOtherModel; no puedes hacer eso si el primero carga directamente el último. O puede modificar el código más tarde para usar un modelo diferente con la misma interfaz, como cuando se refactoriza el código existente para usar un sistema de complemento. –
Google tiene un marco de inyección de dependencia de código abierto. Es para Java pero explica los pros y algunos de los contras de la inyección de dependencia. http://code.google.com/p/google-guice/ –
@Rob Howard Existe tal cosa como la inyección de dependencia demasiado lejos. No es necesario inyectar todos los objetos que utiliza, ya que no todos los objetos que utiliza deben probarse de forma aislada. Más bien, desea probar sistemas y módulos que funcionen juntos como un todo y que deban aislarse entre sí e inyectarse. –
Cargando un modelo dentro de un modelo ahora es posible con el nuevo CodeIgniter.
- 1. cómo heredar un modelo de otro modelo en CodeIgniter
- 2. Cargando y usando un modelo codeigniter de otro modelo
- 3. ¿Se puede llamar a un método de otro modelo en un modelo en Code Igniter?
- 4. Actualizando un modelo de vista desde otro modelo de vista
- 5. ¿Cómo puedo acceder a una variable de configuración de CodeIgniter desde un modelo/controlador?
- 6. backbone.js - acceder a un modelo desde un evento de clic
- 7. Forma correcta de acceder a un modelo de vista desde un modelo de vista existente
- 8. El modelo de rieles pertenece a uno u otro modelo
- 9. Codeigniter: cuándo usar un modelo frente a la biblioteca?
- 10. ¿Se puede pasar un modelo con RedirectToAction?
- 11. modelo de acceso de la vista en codeigniter?
- 12. Modelo Fat Skinny controlador en CodeIgniter
- 13. Cargar una biblioteca en un modelo en CodeIgniter
- 14. PHP y Codeigniter: ¿cómo pasar parámetros a un modelo?
- 15. ¿Puede un modelo "belongs_to" cualquiera o más de un modelo?
- 16. ¿Acceder a una propiedad de modelo en un archivo javascript?
- 17. acceso CanCan `puede` método de un modelo
- 18. Acceso a current_user desde un modelo en Ruby on Rails
- 19. Llamar a un método en un modelo desde una plantilla
- 20. cómo asocio un modelo dos veces a otro
- 21. codeigniter modelo de acceso de la biblioteca
- 22. cómo acceder a la sesión en el modelo asp.net mvc
- 23. información pasar de un modelo de vista a otro
- 24. carriles - ¿Cómo crear un modelo vinculado a dos de otro modelo
- 25. instancia codeigniter de la clase de modelo
- 26. CodeIgniter error del modelo: Undefined property
- 27. Django Modelo establece la clave foránea en un campo de otro Modelo
- 28. cakephp utiliza otro modelo dentro del modelo actual
- 29. 2 proyectos django, importando un modelo de uno a otro
- 30. ¿Cómo se accede a un atributo de modelo en jquery?
¿Es esta una buena práctica? Porque el usuario de Model2 tiene que saber que depende de Model1. ¿Cuál es la buena práctica? – Sabya
Sí, es una mejor práctica para "inyectar" la dependencia, en lugar de inicializar el Model2 dentro de Model1. – Till
Eso no suena bien desde el punto de vista DRY. ¿Qué pasa si tengo una función que cambia un aspecto de un modelo y desencadena una acción para otro modelo? – wag2639