Почему мой 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
.