Можете ли вы получить доступ к модели из другой модели в CodeIgniter? - PullRequest
18 голосов
/ 05 сентября 2008

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

Ответы [ 4 ]

18 голосов
/ 16 сентября 2008

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

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

14 голосов
/ 05 сентября 2008

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

<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
1 голос
/ 19 июля 2013

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

1 голос
/ 16 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...