我在Symfony 2中的bundle中创建了一个简单的类:
class MyTest {
public function myFunction() {
$logger = $this->get('logger');
$logger->err('testing out');
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能访问容器?
JF *_*mon 13
您需要注入服务容器.你的课将看起来像这样:
use Symfony\Component\DependencyInjection\ContainerInterface;
class MyTest
{
private $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function myFunction()
{
$logger = $this->container->get('logger');
$logger->err('testing out');
}
}
Run Code Online (Sandbox Code Playgroud)
然后在控制器或ContainerAware实例中:
$myinstance = new MyTest($this->container);
Run Code Online (Sandbox Code Playgroud)
如果您需要更多解释:http://symfony.com/doc/current/book/service_container.html
在大多数情况下,注入整个容器是个坏主意.单独注入所需的服务.
namespace Vendor;
use Symfony\Component\HttpKernel\Log\LoggerInterface;
class MyTest
{
private $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function myFunction()
{
$logger->err('testing out');
}
}
Run Code Online (Sandbox Code Playgroud)
注册服务services.yml:
services:
my_test:
class: Vendor\MyTest
arguments: [@logger]
Run Code Online (Sandbox Code Playgroud)