#php #model-view-controller #symfony1
#php #модель-представление-контроллер #symfony1
Вопрос:
в данный момент работаю над проектом и не чувствую, что код настолько хорошо структурирован / отделен / обслуживаем, как это должно быть.
Я думаю, что основная проблема заключается в использовании одного класса actions для выполнения основной работы моей системы. Но какие есть альтернативы? Мои другие модули довольно простые и отдельные.
Должна ли модель содержать больше бизнес-логики, чем у меня в моем контроллере (на данный момент файл модели для рассматриваемого класса actions более или менее пуст, в файле табличной модели также не так много).
Я читал http://www.slideshare.net/nperriault/30-symfony-best-practices в котором есть несколько хороших моментов, один из которых заключается в том, чтобы избегать наличия больших классов действий, но на самом деле не говорит вам, как это должно быть сделано.
Должен ли я разбить свой класс actions и разместить разные файлы в /apps / frontend /module / MyModule / lib /. ?
Проблема в том, что у меня есть другой класс actions, который должен повторно использовать некоторые функции из упомянутого выше класса… Я действительно не хочу иметь дублирующийся код, и я попадаю в небольшую неразбериху.
Несколько общих указаний было бы здорово, спасибо
Комментарии:
1. Почему бы вам не опубликовать свой класс действий здесь, чтобы мы могли дать несколько практических советов?
Ответ №1:
Вы можете либо сохранить все действия в одном файле, либо поместить каждое действие в отдельный файл.
Итак, либо
class mymoduleActions extends sfActions
{
public function executeIndex($request)
{
// ...
}
public function executeList($request)
{
// ...
}
}
или
class indexAction extends sfAction
{
public function execute($request)
{
// ...
}
}
plus
class listAction extends sfAction
{
public function execute($request)
{
// ...
}
}
Все это в документации. Затем вы должны поместить повторно используемый код в родительский XYZAction
класс, который могут расширять оба класса действий.
Ответ №2:
Вы всегда можете поместить код в apps/frontend/lib
. Создавайте классы с кодом, который можно использовать повторно, и вы можете просто вызывать методы из своих действий, чтобы избежать дублирования