Можете ли вы получить доступ к модели изнутри другой модели в CodeIgniter?


Я пишу веб-приложение с использованием CodeIgniter, которое требует аутентификации. Я создал модель, которая обрабатывает всю мою аутентификацию. Однако я не могу найти способ получить доступ к этой модели аутентификации изнутри другой модели. Есть ли способ получить доступ к модели из другого режима или лучший способ обработки аутентификации внутри CodeIgniter?

Author: Madan Sapkota, 2008-09-05

4 answers

В общем случае вы не хотите создавать объекты внутри объекта. Это плохая привычка, вместо этого напишите понятный API и внедрите модель в свою модель.

<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
 14
Author: Till, 2008-09-05 17:26:45

Похоже, вы можете загружать модели внутри моделей, хотя, вероятно, вам следует решить эту проблему другим способом. См. Форумы 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();
  }
}

Кроме того, я не понимаю, что Тилл говорит о том, что вы не должны создавать объекты внутри объектов. Конечно, вы должны! Отправка объектов в качестве аргументов выглядит для меня гораздо менее понятной.

 18
Author: Christian Davén, 2008-09-16 17:55:48

Не обрабатывайте аутентификацию в своей модели. Используйте модели только для взаимодействия с вашей базой данных, ldap или чем-то еще.

Я создал библиотеку аутентификации, которую использую для управления аутентификацией и авторизацией. Вы можете получить доступ к такой библиотеке со своих контроллеров.

 1
Author: , 2008-09-16 17:44:14

Загрузка модели в модель теперь возможна с помощью нового CodeIgniter.

 1
Author: saada, 2013-07-18 21:24:06