Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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