2

在 SYMFONY3 中,我在代码中大量使用了VarDumper 组件的 dump(...) 函数,该函数与DebugBundle Configuration ("debug")一起使用。

一旦您转到生产设置dump(...),代码中的所有内容都会成为问题并引发错误,因为在 [project]\app\AppKernel.php 中,设置如下所示:

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = [...];

        if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
            $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
            ...     
        }

        return $bundles;
    }

.... other functions...
}

Symfony\Bundle\DebugBundle\DebugBundle()仅适用于“开发”环境。我可以将它添加到“prod”环境中,但出于明显的性能原因,它并不意味着那样。

这意味着必须删除(或注释)dump(...)代码中的所有内容。我有很多,所以我想知道是否有关于该特定主题的建议,以顺利从 "dev" 移动到 "prod" 。

4

2 回答 2

1

显然,最好的方法是删除所有转储,但这里有一个你可以尝试的解决方法。您应该创建一个什么都不做的 PHP闭包。这样,对转储函数的调用将完全没有效果。我没有尝试过,所以如果您有任何问题,请告诉我。

// web/app.php
function dump() {
    return;
}
于 2017-04-12T14:36:53.840 回答
1

prod环境中,您必须完全删除所有dump()呼叫。这就是为什么 Symfonydump只在dev环境中使用函数,而不允许你在prod环境中使用该函数运行代码。

dump()此外,在代码周围都有语句也不是很好。您可以使用这个有用的功能测试代码的某些部分,但是当您知道您的代码运行良好时,您可以dump()立即删除语句。而且您将来不会有任何问题。

您可以使用任何 IDE 将所有出现的 替换dump()为空字符串,因此您将在prod环境中拥有工作代码。

于 2017-04-12T14:56:09.020 回答