Можете ли вы получить доступ к модели изнутри другой модели в CodeIgniter?
-
09-06-2019 - |
Вопрос
Я пишу веб-приложение с использованием CodeIgniter, требующее аутентификации.Я создал модель, которая обрабатывает всю мою аутентификацию.Однако я не могу найти способ получить доступ к этой модели аутентификации изнутри другой модели.Есть ли способ получить доступ к модели из другого режима или лучший способ обрабатывать аутентификацию внутри CodeIgniter?
Решение
В общем, вы не хотите создавать объекты внутри объекта.Это плохая привычка. Вместо этого напишите понятный API и внедрите модель в свою модель.
<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
Другие советы
Кажется, вы можете загружать модели внутри моделей, хотя, вероятно, вам следует решить эту проблему другим способом.Видеть Форумы CodeIgniter для обсуждения.
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();
}
}
Кроме того, я не понимаю, что говорит Тилль о том, что не следует создавать объекты внутри объектов.Конечно, вам следует!Отправка объектов в качестве аргументов мне кажется гораздо менее понятной.
Не обрабатывайте аутентификацию в своей модели.Используйте модели только для взаимодействия с вашей базой данных, ldap или чем-то еще.
Я создал библиотеку Auth, которую использую для управления аутентификацией и авторизацией.Вы можете получить доступ к такой библиотеке со своих контроллеров.
Загрузка модели внутри модели теперь возможна с помощью нового CodeIgniter.