Где реализовать функции запросов в CakePHP?

Фреймворк CakePHP представляет собой многоуровневую структуру. Мой вопрос:

Где (теоретически) лучше всего реализовать функции запроса данных? В моделях или контроллерах?

Под «функциями запроса данных» я подразумеваю такие функции, как getItemsWithSomeInfo($idItem) и т. д., то есть функции, которые не являются действиями.

В настоящее время я реализую эти функции в контроллере, но я думаю, что есть и другие фреймворки, в которых эти функции (или методы) реализованы на уровне модели.

Я искал в Stackoverflow и нашел похожие проблемы (Where/how для хранения пользовательских функций (или методов) в CakePHP), но (на мой взгляд) это не очень хороший ответ.


person Lobo    schedule 20.01.2012    source источник


Ответы (2)


Такие функции лучше размещать в вашей модели, а не в контроллерах. Все коды, связанные с данными, должны быть в модели. В долгосрочной перспективе это всегда лучшая идея, когда дело доходит до рефакторинга или тестирования. Вы точно знаете, где найти код. И его можно повторно использовать без копирования и вставки в других действиях/контроллерах.

person Sudhir Bastakoti    schedule 20.01.2012
comment
Привет @Sudhir, мне нравится твой ответ, я этого и ожидал. Тем не менее, я хотел бы получить ответ, чтобы убедиться. Привет! - person Lobo; 20.01.2012

Поместите свою функцию в соответствующую модель, а затем используйте ее в своем контроллере:

Пример:

В Model.php

public function getItemsWithSomeInfo($idItem) {
  // your code
}

В ModelsController.php

$this->Model->getItemsWithSomeInfo($id);
person thecodeparadox    schedule 20.01.2012