Допустим, ваш сервис существует:
Class MyService
{
private $name;
private $active;
public function __construct($name,$active)
{
$this->name = $name;
$this->active = $active;
}
}
Если вместо ->get()
его использовать, вы можете ->build()
его :)
class SomeFactory implements FactoryInterface
{
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
return $container->build(MyService::class, ['name' => "Foo", 'active' => true]);
// Line below works as well, using a variable requested name, handy for an AbstractFactory of some kind (e.g. one that creates different adapters in the same way with same params)
// return $container->build($requestedName, ['name' => "Foo", 'active' => true]);
}
}
Проверить ServiceManager build()
функция
Примечание: Не уверен, поскольку, когда он присутствует, это работает в более высоких версиях ZF2 и всех ZF3.
Примечание 2: И get()
, и build()
вызывают функцию doCreate()
.Объявление функции:
private function doCreate($resolvedName, array $options = null)
get()
делает: $object = $this->doCreate($name);
build()
делает: return $this->doCreate($name, $options);