Symfony Factory

scorpion-ds

Новичок
Нашел вот такую статью:
http://symfony.com/doc/current/components/dependency_injection/factories.html

Все вроде понятно, за исключением момента, как в создаваемый объект передать динамический параметр?

В самом низу указывается как передать параметр, но это статическое значение, а мне не понятно, как указать динамический параметр, к примеру ID некого родителя, которому будет привязан новый объект.
 

scorpion-ds

Новичок
Не очень понял, вот у меня такое объявление:
Код:
fc.office.settlements.forecast.office:
        class: FC\OfficeBundle\Settlements\Forecast\ForecastOffice
        factory: [FC\OfficeBundle\Service\ForecastFactory, createForecastOffice]
В контроллере я получаю объект так:
PHP:
$test = $this->get('fc.office.settlements.forecast.office');
Сам по себе метод "createForecastOffice" я не вызываю.
 

scorpion-ds

Новичок
я ступил, я не объявил сам класс фабрики как сервис. Теперь как-то так:
PHP:
$test = $this->get('fc.office.settlements.forecast.office.factory')->createForecastOffice(<param>);
Вурдалак, а что можно сделать, что-то вроде:
PHP:
$test = $this->ForecastFactory->createForecastOffice();
для вызова фабрики?
 

Вурдалак

Продвинутый новичок
scorpion-ds, всё очень просто: значит тебе нужно объявлять ForecastOffice сервисом. Объявляй сервисом фабрику и работай с ней.
 

scorpion-ds

Новичок
Я наверно все же туплю ..., допустим я объявил фабрику сервисом, но тогда отпадает смысл в объявлении:
Код:
fc.office.settlements.forecast.office:
        class: FC\OfficeBundle\Settlements\Forecast\ForecastOffice
        factory: [FC\OfficeBundle\Service\ForecastFactory, createForecastOffice]
Я тогда делаю просто:
Код:
fc.office.settlements.forecast.office.factory:
        class: FC\OfficeBundle\Service\ForecastFactory
        arguments: [@fc.office.manager]
Часть аргументов (сейчас один) я статически подключаю, остальные как параметры метода "createForecastOffice".

Не вижу смысла в объявлении фабрики, если она не позволяет гибко настроить входящие параметры.
 
Сверху