【发布时间】:2018-10-14 15:21:30
【问题描述】:
我在使用 Symfony2 的 LdapUserProvider.php 中调用 ImageEncoderService 时遇到问题。在互联网上,我只找到关于如何在存储库、控制器、实体和命令中调用服务的讨论。
这样做:
class LdapUserProvider implements UserProviderInterface
{
private $ldapManager;
private $bindUsernameBefore;
private $userClass;
private $em;
private $session;
private $imgEncoder;
public function __construct(LdapManagerUserInterface $ldapManager, $bindUsernameBefore = false, $userClass, $em, ImageEncoderService $imgEnconder)
{
$this->session = new Session();
$this->ldapManager = $ldapManager;
$this->bindUsernameBefore = $bindUsernameBefore;
$this->userClass = $userClass;
$this->em = $em;
$this->imgEnconder = $imgEnconder;
}
...
}
抛出此错误:
ContextErrorException in LdapUserProvider.php line 58:
Catchable Fatal Error: Argument 5 passed to
Foo\ApiBundle\Provider\LdapUserProvider::__construct()
must be an instance of Foo\ApiBundle\Service\ImageEncoderService,
none given, called in /app/cache/dev/appDevDebugProjectContainer.php
on line 2202 and defined
甚至可以将服务注入自定义提供程序吗?还是我需要将其注入其他地方,然后在提供程序中使用它?
我正在使用的 LDAP 提供程序是:https://symfony.com/doc/current/security/ldap.html
PS。该服务本身在应用程序的其他地方运行良好,例如命令、控制器等。
【问题讨论】:
标签: symfony service dependency-injection ldap provider