Хорошая особенность Codeigniter заключается в том, что он гибок в отношении того, что происходит в ваших моделях или контроллерах (технически вы можете отказаться от моделей в целом, но такой вид не отвечает цели MVC). Существуют разные точки зрения на дебаты «толстая модель, тонкий контроллер против толстого контроллера, тонкая модель», но я лично предпочитаю иметь прямой доступ к базам данных в моделях, существенно расширяя DataMapper. Однако я обнаружил, что вам, как правило, не нужно добавлять много пользовательских функций, если вы используете функции, доступные вам через DataMapper (обычно я получаю около полудюжины, и большинство из них just complex Выбирает, проверяет или вызывает кодировку JSON для API, которая может быть повторно использована в других контроллерах).
Если вы вызываете функции модели через объект, вы сможете использовать $this
для доступа к установленному объекту. Оттуда вы можете выполнять свои собственные задачи по мере необходимости.
Так, например, у вас может быть $cookie->setCookie($sid, $pid)
в вашем контроллере, а в вашей модели у вас может быть (код не проверен, просто пример):
function setCookie($sid, $pid){
$this->pid = $pid;
$this->sid = $sid;
// Do other custom stuff.
return $this->save();
}
То, что у вас есть в ваших моделях, во многом зависит от того, что вы пытаетесь выполнить, и от того, можно ли сделать то, что вы пытаетесь достичь, с помощью DataMapper. Для базового CRUD и отношений я обычно получаю только объекты в контроллере.
Кроме того, существует несколько библиотек аутентификации, которые обрабатывают сеанс. Возможно, вы захотите проверить их, если пытаетесь создать систему аутентификации.