これを行う最善の方法は、(phpisuber が言ったように) Service Containerを介した依存性注入を使用することです。ただし、コンテナー全体を注入する代わりに (クラス全体のテストが難しくなり、疎結合が壊れるため、悪い習慣と見なされます)、次のようにサービスを注入する必要があります。security.context
acme_foo.bar_service:
class: %acme_foo.bar_service.class%
arguments:
- @security.context
サービスは次のようになります。
<?php
namespace Acme\FooBundle\Service;
use Symfony\Component\Security\Core\SecurityContext;
class BarService
{
/**
* @var SecurityContext
*/
protected $context;
/**
* @param SecurityContext $context
*/
public function __construct($context)
{
$this->context = $context;
}
public function doSomething()
{
return $this->context->isGranted('ROLE_USER');
}
}