VarDumper组件

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.1,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

VarDumper组件

VarDumper组件提供了机制穿过任意PHP变量。之上,它提供了一个更好dump ()功能,您可以使用代替var_dump

安装

您可以安装组件在两个不同的方面:

请注意

如果使用它在一个Symfony应用程序,确欧宝娱乐app下载地址保启用了DebugBundle在你app / AppKernel.php文件。

dump()函数

VarDumper组件创建一个全球性的dump ()功能,您可以使用,而不是如。var_dump。通过使用它,您将获得:

  • 每个对象和资源类型专业观点如过滤原则内部而倾倒一个代理实体,或得到更多的洞察力在打开文件stream_get_meta_data;
  • 可配置的输出格式:HTML或彩色命令行输出;
  • 转储内部引用的能力,要么是软的(对象或资源)或硬的(= &数组或对象属性)。重复出现相同的对象数组/资源不会出现一次又一次了。此外,你可以检查你的参考结构数据;
  • 运营能力的输出缓冲处理程序。

例如:

1 2 3 4 5 6
需要__DIR__“/供应商/ autoload.php”;/ /创建一个变量,它可以是任何东西!美元someVar=……;转储(美元someVar);

默认情况下,选择输出格式和目标是基于你当前的PHP SAPI:

  • 在命令行(CLI SAPI),输出STDOUT。这可奇怪因为这绕过一些PHP的输出缓冲机制;
  • 在其他sapi,转储被编写为常规的HTML输出。

请注意

如果你想赶上转储输出作为一个字符串,请阅读先进的文档欧宝体育电话它包含的例子。您还将了解如何更改格式或将输出重定向到任何你想要的。

提示

以有dump ()函数总是可用的运行时任何PHP代码,你可以在你的电脑安装它在全球范围内:

  1. 运行全球需要symfony / var-dumper欧宝娱乐app下载地址作曲家;
  2. 添加auto_prepend_file = ${回家}/ .composer /供应商/ autoload.php到你的php . ini文件;
  3. 不时地运行全球更新symfony / var-dumpe欧宝娱乐app下载地址r作曲家有最新的bug修复。

DebugBundle和树枝集成

DebugBundle允许更大的集成组件的Symfony的完整框架。欧宝娱乐app下载地址这是默认启用的dev测试Symfony标准版的环境。欧宝娱乐app下载地址

自生成(甚至调试)输出控制器或在您的应用程序可能会打破它的模型如发送HTTP标头或损坏你的视图、包配置dump ()函数,变量是倾倒在web调试工具栏。

但如果不能显示工具栏,因为你如/退出或发生致命错误,然后转储写在常规的输出。

在一根树枝模板中,两个结构变量可供倾销。选择这两个主要是个人口味的问题,还是:

  • {%转储foo。酒吧%}是去当原始模板输出不得修改:变量不是倾销内联,但是在web调试工具栏;
  • 相反,{{转储(foo.bar)}}转储内联,因此可能不适合你的用例(例如,你不应该使用它或在HTML属性<脚本>标签)。

这种行为可以改变配置dump.dump_destination选择。阅读更多关于这个和其他选项DebugBundle配置参考

在PHPUnit)中使用VarDumper组件测试套件中

VarDumper组件提供了一个特征可以帮助为PHPUnit)写一些你的测试。

这将给你提供两个新的断言:

assertDumpEquals ()
验证变量的转储作为第二个参数匹配预期的转储提供作为第一个参数的字符串。
assertDumpMatchesFormat ()
就像以前的方法,但是接受预期转储中占位符,根据assertStringMatchesFormat ()PHPUnit)提供的方法。

例子:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
ExampleTest扩展\PHPUnit_Framework_TestCase{使用\欧宝娱乐app下载地址\组件\VarDumper\测试\VarDumperTestTrait;公共函数testWithDumpEquals(){美元testedVar=数组(123年,“foo”);美元expectedDump=< < < EOTXT数组:2 [0 = > 123 1 = > " foo "] EOTXT;美元- >assertDumpEquals (美元expectedDump,美元testedVar);}}

转储和输出示例

对于简单的变量,输出应该简单阅读。这里有一些例子显示第一个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。=“徘徊在一个字符串显示其长度。\ n”;美元var。=“utf - 8编码的字符串的长度计算utf - 8字符。\ n”;美元var。=“Non-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{公共美元信息=“循环和兄弟姐妹引用显示为“#号”。\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][]=“‘数量’倾倒使用前缀。”;转储(美元var);
1 2 3 4 5
美元var=\ ArrayObject ();美元var[]=“一些资源和特殊的物品,例如当前”;美元var[]=“有时最好使用虚拟”来表示;美元var[]=”属性,描述他们的内部状态。”;转储(美元var);
1 2 3 4 5 6 7 8
美元var=AcmeController (“当一个转储超过它的最大项目限制,\ n””或当遇到一些特殊的对象\ n”“孩子们可以取代一个省略号和\ n””(可选),后跟一个数字表示\ n”“许多已被移除;“9”在这种情况下。\ n”);转储(美元var);
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。