2010-05-07 4 views
0

Вопрос о контроллерах. Может ли контроллер вызвать его собственные методы класса внутри действия?PHP: MVC и DRY

EDIT: О, извините. Я имел в виду, что я не хочу повторять себя. :)

ответ

0

Почему бы и нет?

Все зависит от вас, но я действительно не вижу причины, чтобы избежать сухих (LOL). Смысл MVC является разделение контроллера/модель/представление, больше ничего :)

EDIT: Тем не менее, да, контроллер может вызывать это собственные методы внутри действий. Хорошей практикой было бы дать имена методов действий, например action_something или something_action, и иметь «базовый» контроллер, который вы продляете позже. Подобно;

Controller 
Controller_Application extends Controller 
Controller_Layout extends Controller_Application 

где первый из них будет своего рода «абстракции» (рамочный-ориентированный) и другие будут заботиться о логике приложения. Так что позже вы ...

Controller_Forum extends Controller_Layout 
Controller_News extends Controller_Layout 
Controller_Ajax extends Controller_Application 

в зависимости от того, что вы хотите использовать для определенного контроллера.

Всё зависит от вас; вы можете поместить свои собственные методы там, где захотите, и называть их там, где вы хотите :)

+0

круто, мы отправили в то же самое время. Это должно дать значок: D – Gordon

+0

да, не бывает очень часто :) – Kemo

2

Если вы не используете какую-то неясную структуру, которая так или иначе препятствует этому, вы должны иметь возможность вызывать методы из класса/экземпляра, независимо от того, какой класс/экземпляр является контроллером или чем-то еще.

Если вы обнаружите, что пишете код, который необходимо повторно использовать на нескольких контроллерах, вы можете подумать о написании BaseController и переместить общую функциональность в эту или -better, чтобы разделить общую функциональность на вспомогательные классы, которые затем можно создавать и позвоните по требованию. В принципе, если вам нужно что-то в все контроллеры, переместите его на BaseController. Если вам это нужно в контроллерах, сделайте это помощником. Если вам это нужно только в одном конкретном контроллере, держите его там.

+0

Я просто пытаюсь найти лучшие практики для работы с PHP. :) – PPPHP

Смежные вопросы