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();这就是我怀疑你在做的。