Несколько дней назад состоялся релиз Symfony 2.6.0, который содержит множество интересных нововведений. Одним из наиболее важных является компонент VarDumper.
VarDumper призван заменить всем известную функцию
Перед ее использованием убедимся, что
Теперь вы можете заменить все вызовы функции
Рассмотрим, для примера, контроллер, который целиком выводит контейнер Symfony и объект
При отображении этого контроллера в браузере, вы увидите новую панель
При клике на панель вы получите полное содержимое этих переменных, включая информацию о ссылках, public/protected/private свойствах и методах, неограниченный уровень вложенности и т.д.:
В дополнение к интеграции с отладочной панелью Symfony, компонент достаточно умен, чтобы обнаружить, используете ли вы
VarDumper также содержит тег
Функция
Компонент VarDumper поставляется с Symfony начиная с версии 2.6.0, но если какие-то ваши проекты застряли на версиях 2.3, 2.4 или 2.5, вы можете установить
Подробнее можно почитать в документации компонента VarDumper, а так же статью Расширенное использование компонента VarDumper.
VarDumper призван заменить всем известную функцию
var_dump()
более современной и функциональной альтернативой — функцией dump()
.Перед ее использованием убедимся, что
DebugBundle
подключен в AppKernel
:// 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();
// ...
}
}
// ...
}
Теперь вы можете заменить все вызовы функции
var_dump()
на новый и более короткий dump()
. В отличие от var_dump()
, вы можете безопасно использовать dump()
, чтобы отобразить содержимое любых переменных, включая переменные с циклическими ссылками, такие как сущности Doctrine.Рассмотрим, для примера, контроллер, который целиком выводит контейнер Symfony и объект
Request
:namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller
{
public function indexAction(Request $request)
{
dump($this->container, $request);
// ...
}
}
При отображении этого контроллера в браузере, вы увидите новую панель
dump
, которая записывает все запрошенные переменные и кратко показывает их содержимое:При клике на панель вы получите полное содержимое этих переменных, включая информацию о ссылках, public/protected/private свойствах и методах, неограниченный уровень вложенности и т.д.:
В дополнение к интеграции с отладочной панелью Symfony, компонент достаточно умен, чтобы обнаружить, используете ли вы
exit
или die()
в коде. В этих случаях переменные пишутся в стандартный вывод.VarDumper также содержит тег
{% dump %}
и функцию {{ dump() }}
для проверки переменных прямо из шаблонов Twig. Тег {% dump %}
показывает переменные в отладочной панели (например, {% dump variable1, variable2 %}
). Отличный вариант, когда вывод шаблона не должен изменяться.Функция
{{ dump() }}
наоборот отображает содержимое переменных прямо в шаблоне (например, {{ dump(variable1, variable2) }}
).Компонент VarDumper поставляется с Symfony начиная с версии 2.6.0, но если какие-то ваши проекты застряли на версиях 2.3, 2.4 или 2.5, вы можете установить
debug-bundle
следующим образом:$ composer require --dev tchwork/debug-bundle
Подробнее можно почитать в документации компонента VarDumper, а так же статью Расширенное использование компонента VarDumper.