如何在没有激活 XDebug 扩展的情况下让 php vardump 和 twig dump 正常工作


How to have php vardump and twig dump work properly without XDebug extension activated?

我正在使用带有Twig的PHP Symfony 2。可能与纯PHP相关。

出于WAMP + Windows 7的性能原因,我已经停用了XDebug扩展。现在我的页面加载速度更快。

但是,这会带来var转储问题。

php var_dump的漂亮格式已经消失了。我已经安装了 REF,我可以用 ~r($myvariable) 得到类似的东西.

但是树枝{{ dump(myvariable) }}不再起作用,尽管我确实在 php 端验证了myvariable有效,但我得到一个完整的空白屏幕。

如何在不安装 XDebug 的情况下让var_dump在 PHP 和 twig 中正常工作?

您可以使用

html <pre>标签轻松实现这一点。

HTML

<pre>元素(或 HTML 预格式化文本)表示 预先格式化的文本。此元素中的文本通常显示在 与文件中的布局完全不成比例的字体。 此元素内的空格显示为键入。

您的代码将如下所示:

echo '<pre>';
var_dump($variable);
echo '</pre>';

好吧,这个问题是由var_dump转储整个对象引起的:如果对象有很多关联,PHP 需要很长时间才能显示结果,并且它只是用树枝崩溃了。

我的短期解决方案:对象不var_dump

我的中期解决方案:为 REF 实现树枝过滤器。

通常 XDebug 的输出更好(当html_errors打开时),但是如果您禁用了扩展,则可以添加pre标签,例如

<pre>
    {{ dump(user) }}
</pre>

或者要显示所有变量,请仅使用 <pre> {{ dump() }} </pre> 。或者,检查代码源,以便可以正确显示新行尾。

请注意,转储函数在默认情况下不可用,因此您必须在创建 Twig 环境时显式添加Twig_Extension_Debug扩展:

$twig = new Twig_Environment($loader, array(
    'debug' => true,
    // ...
));
$twig->addExtension(new Twig_Extension_Debug());

否则dump如果未启用环境中的调试选项,则该函数将不会显示任何内容。

如果仍有空白页,请启用 PHP 错误报告并将其显示在页面上,或检查 PHP 错误日志以获取任何线索。

参见: 函数 » 转储