vardump组件
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
vardump组件
VarDumper组件提供了遍历任意PHP变量的机制。建立在上面,它提供了一个更好的
dump ()
函数,可以用来代替var_dump.
安装
1
$作曲家需要symfony/var ob娱乐下载dump—dev
或者,您可以克隆https://github.com/ob娱乐下载symfony/var-dumper存储库。
请注意
如果在Symfony应用程序外部安装此组件,则必须要求ob娱乐下载供应商/ autoload.php
文件,以启用Composer提供的类自动加载机制。读这篇文章欲知详情。
请注意
如果在Symfony应用程序中使用它,请确ob娱乐下载保在您的应用程序中启用DebugBundleapp / AppKernel.php
文件。
dump()函数
vardump组件创建了一个全局变量dump ()
你可以用它来代替。var_dump.通过使用它,你将获得:
- 每个对象和资源类型专门的视图,例如过滤出Doctrine内部,同时转储单个代理实体,或获得更多关于打开文件的见解stream_get_meta_data;
- 可配置的输出格式:HTML或彩色命令行输出;
- 能够转储内部引用,无论是软引用(对象或资源)还是硬引用(
= &
数组或对象属性)。重复出现的同一个对象/数组/资源将不再一次又一次地出现。此外,您还可以检查数据的引用结构; - 在输出缓冲处理程序上下文中操作的能力。
例如:
1 2 3 4 5 6
需要__DIR__.“/供应商/ autoload.php”;//创建一个变量,它可以是任何东西!$someVar=……;转储($someVar);
默认情况下,输出格式和目的地是根据您当前的PHP SAPI选择的:
- 在命令行(CLI SAPI)上,输出被写入
STDOUT
.这可能会让一些人感到惊讶,因为这绕过了PHP的输出缓冲机制; - 在其他sapi上,转储在常规输出中以HTML的形式写入。
请注意
如果您想捕获转储输出作为字符串,请阅读先进的文档欧宝官网下载app其中包含了一些例子。您还将学习如何更改格式或将输出重定向到您想要的地方。
提示
为了拥有dump ()
函数在运行任何PHP代码时总是可用的,你可以在你的计算机上全局安装它:
- 运行
Composer global需要symfonyob娱乐下载/var dump
; - 添加
auto_prepend_file = ${HOME}/.composer/vendor/autoload.php
到你的php . ini
文件; - 时不时地跑一跑
Composer全局更新symfony/varob娱乐下载 dump
获得最新的错误修复。
DebugBundle和Twig集成
DebugBundle允许将组件更好地集成到Symfony全堆栈框架中。ob娱乐下载中默认启用dev而且测验Symfony标准版的环境。ob娱乐下载
由于在控制器或应用程序的模型中生成(甚至是调试)输出可能只是通过发送HTTP报头或破坏视图来破坏它,bundle配置dump ()
函数,以便将变量转储到web调试工具栏中。
但是如果工具栏不能显示,因为你调用了死
/退出
或者发生了致命错误,则将转储写入常规输出。
在Twig模板中,有两个结构可用于转储变量。两者之间的选择主要是个人口味的问题,不过:
{% dump foo。酒吧%}
是去的方式时,原来的模板输出不得修改:变量不转储内联,而是在web调试工具栏;- 相反,
{{dump(foo.bar)}}
dump内联,因此可能适合也可能不适合你的用例(例如,你不应该在HTML属性或<脚本>
标签)。
属性可以更改此行为debug.dump_destination
选择。阅读更多关于这个和其他选项DebugBundle配置参考.
在PHPUnit测试套件中使用vardump组件
2.7
的VarDumperTestTrait在Symfony 2.7中引入。ob娱乐下载
VarDumper组件提供一个特征它可以帮助你为PHPUnit编写一些测试。
这将为您提供两个新的断言:
- assertDumpEquals ()
- 验证作为第二个参数给出的变量的转储是否与第一个参数中以字符串形式提供的预期转储相匹配。
- assertDumpMatchesFormat ()
-
类似于前面的方法,但在预期转储中接受占位符,基于
assertStringMatchesFormat ()
PHPUnit提供的方法。
例子:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
使用PHPUnit)\框架\TestCase;类ExampleTest扩展TestCase{使用\ob娱乐下载\组件\VarDumper\测试\VarDumperTestTrait;公共函数testWithDumpEquals(){$testedVar=数组(123,“foo”);$expectedDump=<< 123 1 => "foo"] EOTXT; $这->assertDumpEquals ($expectedDump,$testedVar);}}
提示
如果仍然使用PHP 5.3,则可以扩展VarDumperTestClass代替。
转储示例和输出
对于简单的变量,读取输出应该很简单。下面是一些例子,首先是PHP中定义的变量,然后是它的转储表示:
1 2 3 4 5 6 7 8
$var=数组(一个简单的字符串= >"在5个元素的数组中",“浮”= >1.0,“整数”= >1,“一个布尔”= >真正的,'一个空数组'= >数组());转储($var);
请注意
灰色箭头是一个切换按钮,用于隐藏/显示嵌套结构的子结构。
1 2 3 4 5 6 7
$var=“这是一个多行字符串。\n”;$var.=“悬停字符串会显示它的长度。”;$var.=UTF-8字符串的长度是根据UTF-8字符计算的。\n;$var.="非utf -8字符串长度以字节大小计算。\n";$var.=“由于这个‘\xE9’八位体(\\xE9),\n”;$var.="此字符串不是UTF-8有效的,因此' b '前缀。\n";转储($var);
1 2 3 4 5 6 7 8 9
类PropertyExample{公共$publicProperty=“+”前缀表示公共属性。;受保护的$protectedProperty=' ' # '受保护的和' - '私有的。';私人$privateProperty=“悬停某个属性会显示提醒。”;}$var=新PropertyExample ();转储($var);
请注意
' #14 '是内部对象句柄。它允许比较同一对象的两个连续转储。
1 2 3 4 5 6 7 8
类DynamicPropertyExample{公共$declaredProperty='此属性在类定义中声明';}$var=新DynamicPropertyExample ();$var->undeclaredProperty =运行时添加的动态属性名称周围有“”。;转储($var);
1 2 3 4 5 6 7
类ReferenceExample{公共$信息=循环引用和同级引用显示为“#number”。\nHovering them highlights all instances in the same dump.\n";}$var=新ReferenceExample ();$var->aCircularReference =$var;转储($var);
1 2 3 4 5 6 7 8
$var=新\ ErrorException ("对于某些对象,属性具有特殊值\n"."最好用常数表示,比如\n".”下面的“严重性”。悬停显示值(' 2 ')。\n",0, e_warning);转储($var);
1 2 3 4 5 6 7 8
$var=数组();$var[0] =1;$var[1] = &$var[0];$var[1) + =1;$var[2] =数组(硬引用(循环引用或同级引用));$var[3.] = &$var[2];$var[3.] [] ="使用' &number '前缀转储。";转储($var);
1 2 3 4 5
$var=新\ ArrayObject ();$var[] =“一些资源和特殊对象,如当前”;$var[] ="一个人有时用虚拟来表现最好";$var[] =“描述其内部状态的属性。”;转储($var);
1 2 3 4 5 6 7 8
$var=新AcmeController (“当转储超过其最大项目限制时,\n”."或者当遇到一些特殊对象时,\n"."children可以用省略号和\n代替".“可选地后面跟着一个数字,表示\n”.“许多已经被移走了;在这种情况下是“9”。);转储($var);