Архитектура Symfony 2 в случае модельного класса (Services, Dependencie инъекция) - PullRequest
1 голос
/ 01 апреля 2012

Недавно я переехал в Symfony 2, и у меня есть небольшой вопрос.

Допустим, у меня есть следующая модель:

«каталог», который содержит «каталоги». Модель получает данные из файлов, но для проверки данных также требуется соединение с базой данных.

В среде Zend или других прошлых проектах я загружал зависимости статическим объектом, который образует своего рода «реестр».

Как я понимаю, Symfony 2 использует вместо этого свой шаблон службы (внедрение зависимостей). Но как это относится к моему делу.

Должен ли я создать службу для каждого класса модели, который я использую для автоматического внедрения всех зависимостей? Или это совершенно верно, когда я сам создаю экземпляр из моего объекта и устанавливаю, например, соединение с базой данных в моем конструкторе? Создание сервиса для каждого класса, который нуждается в зависимостях, кажется мне немного излишним.

1 Ответ

0 голосов
/ 02 апреля 2012

Вы, конечно, можете создавать классы и вставлять зависимости по старинке, но не торопитесь, чтобы изучить детали создания сервисов.Я думаю, вы найдете:

  1. Добавление нового сервиса тривиально.Скопируйте / вставьте несколько строк конфигурации, настройте класс, идентификатор и, возможно, некоторые параметры, и все готово.Занимает гораздо меньше времени, чем создание фактического класса.

  2. Очень скоро вы перейдете от простого подключения к базе данных к внедрению других служб, а также, возможно, некоторых параметров.Вы действительно хотите помнить, чтобы делать все эти вещи каждый раз, когда вам нужно создать новый объект?

  3. Использование идентификаторов службы может отделить ваши контроллеры от точного местоположения / имени класса,В первый раз, когда вам понадобится провести некоторый рефакторинг и, возможно, переместить некоторые сервисы в их собственный пакет или, возможно, поменять сервис на другой, вы будете рады, что вам не нужно будет выслеживать весь код и вносить изменения.1014 *

S2 на самом деле не ориентирован на "Модели".Вместо этого, подумайте о сервисе с именем CatalogManager, который предоставляет доступ к различным функциям каталога.

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