Немного трудно дать Вам "правильные" ответы, так как некоторые из них имеют дело со специфическими особенностями платформы (независимо от тех, Вы работаете с).
, По крайней мере, с точки зрения CakePHP:
Да
Что-либо, что имеет дело с манипулированием данными или манипулированием данными, должно быть в модели. С точки зрения CakePHP что относительно простой находки () метод?... Если существует шанс, что это сделает что-то "специальное" (т.е. вспомнит определенный набор 'условия'), в котором Вы, возможно, нуждались бы в другом месте, это - хорошее оправдание перенестись в методе модели.
, К сожалению, никогда нет легкого ответа, и рефакторинг кода является естественным процессом. Иногда Вы просто будите движение: "святые макароны..., которые должны быть в модели!" (хорошо, возможно, Вы не делаете этого, но я имею:))
Я использую, по крайней мере, эти два 'теста', чтобы проверить, находится ли моя логика в правильном месте:
1), Если я пишу unittest, легко только создать один 'реальный' объект сделать тест на (= объект, который Вы используете в производстве), и не включают много других, за исключением, возможно, некоторых объектов значения. При необходимости в и фактическом объекте модели и в фактическом объекте контроллера сделать тест мог быть сигналом, необходимо переместить функциональность.
2) Задают мне вопрос: что, если бы я добавил другой способ использовать эти классы, я должен был бы копировать функциональность способом, которая является почти вставкой копии?... Это - также, вероятно, серьезное основание переместить ту функциональность.
также интересный: http://www.martinfowler.com/bliki/AnemicDomainModel.html