Почему мой VarDumper не работает в Symfony2

Я установил VarDumper, используя композитор. Я вызвал функцию dump() в моем контроллере, это должно работать правильно?

composer require symfony/var-dumper

-

public function indexAction()
{
    $messages = Array(
            'x' => 'y',
            'a' => 'b',
            'c' => 'd'
            );

    dump($messages);
}

Это ошибка, которую я получаю. Но почему я не могу назвать дамп в моем контроллере?

Attempted to call function "dump" from namespace "App\Bundle\Controller".

Ответ 1

В зависимости от среды может быть несколько деклараций глобальной функции dump() (т.е. в грушах /XML, грушах/adobd и т.д.).

Кроме того, если вы внимательно посмотрите на новое объявление функции дампа Symfony, оно создается только в том случае, если оно еще не существует:

if (!function_exists('dump')) {
    /**
     * @author Nicolas Grekas <[email protected]>
     */
    function dump($var)
    {
        foreach (func_get_args() as $var) {
            VarDumper::dump($var);
        }
    }
}

Итак, хорошим решением является прямое вызов VarDumper::dump() из пространства имен Symfony\Component\VarDumper\VarDumper. Я также предлагаю обернуть его внутри exit(), чтобы избежать неожиданного поведения:

use Symfony\Component\VarDumper\VarDumper;

class myClass
{
    function myFunction()
    {
        exit(VarDumper::dump(...));
    }
}

Ответ 2

Убедитесь, что пакет DebugBundle включен в ядре приложения

// 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();
            // ...
       }
    }

    // ...
}

Ответ 3

композитор global требует symfony/var-dumper

Вы увидите: Измененный текущий каталог (GLOBAL_COMPOSER_DIRECTORY)

В php.ini: auto_prepend_file = (GLOBAL_COMPOSER_DIRECTORY)/vendor/autoload.php

Затем вы можете использовать дамп во всех своих проектах, не устанавливая его

Ответ 4

Попробуйте обновить зависимости проекта с помощью команды php composer.phar update. Эта команда должна запускаться после composer require symfony/var-dumper.