Сервис Symfony Factory не передает аргументов - PullRequest
0 голосов
/ 21 марта 2012

Я создал сервис Factory в Symfony2 ( нажмите здесь для получения дополнительной информации об этом )

Затем я добавил службу в конфигурацию YAML следующим образом:

services:
#crypto services manager
cs_manager:
    class: MyMC\Encrypt\Manager
    factory_class: MyMC\Encrypt\Manager
    factory_method: getInstance
    arguments:
        - %cs_application_cert%
        - %cs_service_cert%
        - %cs_cert_password%

#identity management system manager
ims_manager:
    class: MyMC\Ims\Manager
    factory_class: MyMC\Ims\Manager
    factory_method: getInstance
    arguments:
        - %ims_service_domain%
        - @cs_manager

Вы видите, что я передаю 2 аргумента в ims_manager.В функции getInstance () фабрики ims_manager я проверяю, чтобы убедиться, что эти два аргумента были переданы в ...

public static function getInstance($apiUrl = null, $cryptoService = null) {
    if(!isset(self::$service)) {
        $className = __CLASS__;
        if($apiUrl == null) {
            throw new Exception('getInstance','API url must not be null. Initiate with correct parameters on first call.');
        }
        if($cryptoService) {
            throw new Exception('getInstance', 'You must pass a valid Encryption object on first call.');
        }
        self::$service = new $className($apiUrl);
    }

    return self::$service;
}

Но он выдает там свое собственное исключение, говоря, что я должен передать варгументы, что означает, что они не передаются Symfony при вызове функции. Может кто-нибудь придумать причину, по которой Symfony не передаст аргументы, которые я указал в файле конфигурации?

Кроме того, вот мое обратное следствие для последних 10 вызовов:

at Manager::getInstance()
at call_user_func() in /var/www/app/cache/dev/appDevDebugProjectContainer.php line 734
at appDevDebugProjectContainer->getImsManagerService() in /var/www/app/bootstrap.php.cache line 190
at Container->get() in /var/www/app/cache/dev/appDevDebugProjectContainer.php line 217
at appDevDebugProjectContainer->getEntityManagerService() in /var/www/app/bootstrap.php.cache line 190
at Container->get() in /var/www/app/cache/dev/appDevDebugProjectContainer.php line 857
at appDevDebugProjectContainer->getMcSecurityProviderService() in /var/www/app/bootstrap.php.cache line 190
at Container->get() in /var/www/app/cache/dev/appDevDebugProjectContainer.php line 1929
at appDevDebugProjectContainer->getSecurity_Authentication_ManagerService() in /var/www/app/bootstrap.php.cache line 190
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...