2013-10-06 1 views
6

Что такое способ записи сообщений или ошибок из класса Entity или Repository в архитектуре symfony2? В symfony1 можно использовать синглтон, чтобы убить щенок делать что-то вроде этого, чтобы получить регистратор из любого места:Правильный способ регистрации из объектов и репозиториев в Symfony2

sfContext::getInstance()->getLogger() 

модели контейнера Symfony2 является строже, который является большим, но как один должен идти о регистрации из неживого контейнера -aware классы? Для repos, я думаю, вы можете определить их (все) как службы, с зависимостью от регистратора и оттуда. Но как насчет того, когда у вас есть экземпляр класса Entity?

Исторически я хотел бы поместить сообщение журнала внутри методов класса, но теперь? Должен ли я передать регистратор (как параметр) в каждый метод класса, который хочет записать сообщение журнала? Это похоже на перебор, но, возможно, это лучшая практика?

Или я смотрю на это неправильно, и сущности или репозиции не должны записывать сообщения журнала, а передавать их обратно контроллеру?

ответ

2

Возможно, вам следует избегать размещения бизнес-логики (даже регистрации) внутри модели сущности.

Что касается репозиториев, то, как вы описали, является правильным.

+2

Разве это не сущность, где должна идти вся бизнес-логика? Я сейчас очень смущен! У вас есть MVC-архитектура ... так что V для просмотров (веточка, нет бизнес-логики), C для контроллеров - держите их тонкими, а логика - только о маршрутизации и передаче тяжелого подъема модели M. Что такое классы Entity, верно? – caponica

+0

Symfony2 на самом деле не MVC, но он близок. Вы правы в ** V ** и ** C **, но ** M ** - odel должен описывать структуру данных и ничего больше. Проверьте это: http://knpuniversity.com/screencast/question-answer-day/model-organization –

+0

Хм ... Мне нужно подумать об этом немного! Провел 2-дневный тренинг в Sensio, и они потратили весь первый день на то, как проекты Sf2 должны быть MVC :) Тем не менее, чем больше я вникаю в это, тем больше имеет смысл перемещать код в сервисы, а не в сущности. Делает перенос старого (MVC) проекта на Sf2 еще сложнее, чем я думал! – caponica

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