Где я могу поместить классы в Symfony, которые не являются ни контроллерами, ни моделями? - PullRequest
8 голосов
/ 07 сентября 2011

Для моего пакета приложений мне понадобятся некоторые классы, которые не являются ни контроллерами, ни моделями. Например, я хотел бы иметь класс scorecard, в котором есть такие члены, как «навык», «эффективность», «красота» и т. Д. Кроме того, у него могут быть методы / методы получения членов, такие как «meanScore».

Куда пойдет такой класс в среде Symfony?

Ответы [ 3 ]

8 голосов
/ 07 сентября 2011

Я согласен с @Gordon, что это звучит как бизнес-объект. Но если вы уверены, что это не так, ваш следующий шаг - выяснить, как бы вы его классифицировали. Это помощник? Слушатель событий? Сервисный класс? Как только вы поймете это, спросите себя: это специфично для пакета или вы собираетесь повторно использовать его в проектах?

Допустим, вы решили, что это прослушиватель событий и принадлежит пакету. Поместите это в MyBundle/EventListener. Если это помощник, поместите его в MyBundle/Helper. Теперь, если вы планируете повторно использовать его среди проектов (что в данном случае на самом деле звучит не так, но терпите меня ...), вам лучше создать для него место в vendor.

Важно помнить, что, поскольку Symfony2 настолько молод, на самом деле нет окончательного списка лучших практик, которые отвечают на подобные вопросы. Прямо сейчас нам нужно посмотреть, что работает, а что нет. Это как дикий запад :) 1008 *

3 голосов
/ 07 сентября 2011

Я отвечаю на подобные вопросы для себя так: я захожу на KnpBundles и проверяю, как это делают другие разработчики.

Еще одна вещь, на которую стоит обратить внимание, это то, что Symfony2 - это свободавыбора, когда речь заходит о конфигурации.Вы можете поместить все в папку Random для всех забот ядра Symfony2, если вы правильно настроили его.Ну, это, вероятно, доводит это до крайности, но, например, Listener или EventListener - без разницы.

Теперь, если вы спросите меня, я бы сказал, что для Scorecard - в зависимости от того, где вы собираетесь его использовать, Service или Helper/Util

О breadcrumb - кажется хорошим примером для расширения ветки.

2 голосов
/ 07 сентября 2011

Поскольку этот класс, очевидно, представляет бизнес-объект из вашего домена, он принадлежит модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...