Php 通过工厂方法调用服务
现在,我可以通过以下方式从控制器调用服务:Php 通过工厂方法调用服务,php,symfony,Php,Symfony,现在,我可以通过以下方式从控制器调用服务: $this -> get('myservice') -> doSomething(); 但我想按照工厂方法模式来做,如下所示: ServiceFactory :: createMyservice() -> doSomething(); 问题是我不能用第二个方法传递参数,它们是空的 services.yml: parameters: services: myservice: class: AppBundl
$this -> get('myservice') -> doSomething();
但我想按照工厂方法模式来做,如下所示:
ServiceFactory :: createMyservice() -> doSomething();
问题是我不能用第二个方法传递参数,它们是空的
services.yml:
parameters:
services:
myservice:
class: AppBundle\Service\Myservice
factory: [Appbundle\Factory\ServiceFactory, createMyservice]
arguments:
- "%kernel.root_dir%"
ServiceFactory.php:
<?php
namespace AppBundle\Factory;
use AppBundle\Service\MyService;
class ServiceFactory
{
public static function createMyservice($rootDir)
{
var_dump($rootDir); // NULL
$object = new Myservice($rootDir);
return $object;
}
}
为什么?symfony服务容器已使用您的服务工厂。不要在控制器中使用静态方法。从控制器使用$myService=$this->get('myService');而不是$myService=ServiceFactory::createMyService();这就是我怀疑你在做的。