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

StackOverflow https://stackoverflow.com/questions/46338

Вопрос

Я пишу веб-приложение с использованием 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top