首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的VarDumper不在Symfony2工作

为什么我的VarDumper不在Symfony2工作
EN

Stack Overflow用户
提问于 2015-05-01 10:06:02
回答 4查看 13.5K关注 0票数 13

我使用composer require安装了VarDumper。我已经在我的控制器中调用了dump()函数,这应该能正常工作吗?

代码语言:javascript
复制
composer require symfony/var-dumper

-

代码语言:javascript
复制
public function indexAction()
{
    $messages = Array(
            'x' => 'y',
            'a' => 'b',
            'c' => 'd'
            );

    dump($messages);
}

这就是我所犯的错误。但为什么我不能叫我的控制器转储呢?

代码语言:javascript
复制
Attempted to call function "dump" from namespace "App\Bundle\Controller".
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-05-26 14:55:48

开发类环境

对于类似开发的环境(开发、测试等),必须确保在应用程序内核中启用了DebugBundle

DebugBundle在Symfony应用程序中集成了VarDumper组件。所有这些选项都是在应用程序配置中的调试键下配置的。

溶液

代码语言:javascript
复制
// app/AppKernel.php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
        );

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

    // ...
}

生产类环境

这是一个在生产环境中转储变量的坏实践,但是有些情况不适合最佳实践。

根据环境的不同,全局函数dump()可能有多个声明(在pear/XMLpear/adobd等中)。此外,如果仔细查看新的Symfony dump()函数声明,只有在它不存在的情况下才会创建它:

代码语言:javascript
复制
if (!function_exists('dump')) {
    /**
     * @author Nicolas Grekas <p@tchwork.com>
     */
    function dump($var)
    {
        foreach (func_get_args() as $var) {
            VarDumper::dump($var);
        }
    }
}

溶液

因此,好的解决方案是从名称空间VarDumper::dump()直接调用Symfony\Component\VarDumper\VarDumper。我还建议将其封装在exit()中以避免意外行为:

代码语言:javascript
复制
use Symfony\Component\VarDumper\VarDumper;

class myClass
{
    function myFunction()
    {
        exit(VarDumper::dump(...));
    }
}
票数 22
EN

Stack Overflow用户

发布于 2015-10-22 13:26:17

确保在应用程序的内核中启用了DebugBundle

代码语言:javascript
复制
// app/AppKernel.php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
   {
        $bundles = array(
        // ...
        );

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

    // ...
}
票数 22
EN

Stack Overflow用户

发布于 2015-05-12 13:33:18

composer全局需要symfony/var-dumper

您将看到:已更改的当前目录(GLOBAL_COMPOSER_DIRECTORY)

在您的(GLOBAL_COMPOSER_DIRECTORY)/vendor/autoload.php : auto_prepend_file =auto_prepend_file中

然后,您可以在所有项目中使用转储,而不必安装它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29984955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档