gpt4 book ai didi

php - 在 symfony 2 中访问 AppKernel 环境变量

转载 作者:IT王子 更新时间:2023-10-29 01:20:19 25 4
gpt4 key购买 nike

我正在使用 symfony 2,我们有 2 个配置,dev 和 prod。我需要知道我是否可以找出我在实体或模型中使用的是哪一个。

我正在寻找与在 AppKernel.php 中找到的代码类似的内容:

$this->getEnvironment()

如果我可以加载内核来调用它,那就太好了,但我找不到执行此操作的方法。对此进行调查后,似乎 symfony 事件可能会返回内核,但我不知道如何或在何处捕获这些事件,以便我可以对它们调用 getKernel() 。 http://symfony.com/doc/current/book/internals.html

例如,他们列出了这个例子:

使用 Symfony\Component\HttpKernel\Event\FilterControllerEvent;

public function onKernelController(FilterControllerEvent $event)
{
$controller = $event->getController();
// ...

// the controller can be changed to any PHP callable
$event->setController($controller);
}

我不清楚将这段代码放在哪里。在我看来,它应该放在内核中,如果我有内核,我就不会遇到这个问题。

我的问题是,是否有一种简单的方法可以让我从服务或模型中确定我是处于内核中设置的“开发”还是“生产”状态。谢谢

最佳答案

控制台生成的默认实体类不继承任何东西。这意味着它们在任何方面都不是“ContainerAware”。

一般来说,我认为他们不应该。我想这取决于你在做什么,但你可以通过一些基本的依赖注入(inject)来处理这个问题

在 Controller 中:

$entity = new \Your\Bundle\Entity\Foo(
$this->container->get( 'kernel' )->getEnvironment()
);

然后在src/Your/Bundle/Entity/Foo.php

private $env;

public function __construct( $env=null )
{
$this->env = $env;
}

这对你有用吗?

附言您发布的事件监听器适用于 Controller - 不适用于任意类。

关于php - 在 symfony 2 中访问 AppKernel 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com