Правильно ли хранить дополнительные методы в модели?

Есть модели и в них штук по 20 дополнительных статических методов для получения разных данных (по разному отсортированных или отдельные данные, используемые в нескольких местах).
Правильно ли так? Или лучше как-то оформить в виде компонента, поведения или типа такого?
И будет ли лучше сделать их не статическими, а обычными методами?
  • Вопрос задан
  • 251 просмотр
Решения вопроса 1
@edojdikov
Senior PHP developer
По мне, так это не правильно.
Для получения из одной модели данных по разному отсортированному, но делать это через разные методы, это большое излишество кода. У вас есть CDbCriteria->order, например, а порядок сортировки тоже не проблема передать в модель.
А получение разных данных, если подразумевается разные поля из одной модели, то тоже лишнее кодирование, на мой взгляд. Можно всегда отдавать дозволенный набор полей.
Если таких пересечений много, то даже для читабельности проще объединить эти методы, хоть банальный search() сделать. Выделять в компонент или поведение, наверно нет. Хотя все это можно вынести в scopes(), где и описать и сортировку и поля в select.
И по мне лучше их сделать не статикой, но это все зависит от контекста модели и ее методов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Akellacom
CTO
Я считаю что это правильно. Ведь модель для этого и нужна, для работы с базой. Главное чтоб вы не делали дублирование стандартных методов :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы