先进的VarDumper组件的使用
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
先进的VarDumper组件的使用
的dump ()
函数是一个瘦包装器和一个更加方便的方式来调用VarDumper:转储()。你可以改变这个函数通过调用的行为VarDumper: setHandler(可赎回美元)。调用dump ()
将被转发到吗美元可调用的
。
通过添加一个处理程序,您可以定制切割,矿用汽车和脚轮如下解释。处理函数的一个简单的实现可能会看起来像这样:
1 2 3 4 5 6 7 8 9 10 11
使用ob娱乐下载\组件\VarDumper\切割\VarCloner;使用ob娱乐下载\组件\VarDumper\自动倾卸车\CliDumper;使用ob娱乐下载\组件\VarDumper\自动倾卸车\HtmlDumper;使用ob娱乐下载\组件\VarDumper\VarDumper;VarDumper::setHandler (函数(美元var){美元切割=新VarCloner ();美元自动倾卸车=“cli”= = = PHP_SAPI ?新CliDumper ():新HtmlDumper ();美元自动倾卸车- >转储(美元切割- >cloneVar (美元var));});
切割
切割是用来创建一个中间表示任何PHP变量。它的输出是一个数据对象,该对象将封装这种表示方法。
您可以创建一个数据
对象:
1 2 3 4 5 6 7
使用ob娱乐下载\组件\VarDumper\切割\VarCloner;美元切割=新VarCloner ();美元数据=美元切割- >cloneVar (美元myvar#);/ /这是一般然后传递给清洁工人/ /查看这个页面的顶部/ / $翻车机- >转储(元数据);
不管克隆的数据结构,产生的数据
对象都是可序列化的。
切割适用限制在创建表示,这只能代表一个克隆的变量的一个子集。在调用之前cloneVar ()您可以配置这些限制:
- setMaxItems ()
-
配置项的最大数量将克隆过去的最小嵌套深度。项数使用广度优先算法,这样低水平项目比深层嵌套的优先项目。指定
1
消除了极限。 - setMinDepth ()
-
配置的最小树深度我们保证克隆的所有项目。达到这个深度后,只有
setMaxItems
项目将克隆。默认值是1
,这是与旧的Symfony版本一致。ob娱乐下载3.4
的
setMinDepth ()
方法是在Symfony 3.4中引入的。ob娱乐下载 - setMaxString ()
-
配置的最大字符数,将克隆在切割之前太长的字符串。指定
1
消除了极限。
在倾销它之前,您可以进一步限制所产生的数据对象使用以下方法:
- withMaxDepth ()
- 深度尺寸限制转储。
- withMaxItemsPerDepth ()
- 限制了每级深度的项的数量。
- withRefHandles ()
- 删除内部对象的处理稀疏的输出(用于测试)。
- 寻求()
-
只选择的时候已经克隆数组、对象或资源。
3.2
的
寻求()
方法是在Symfony 3.2中引入的。ob娱乐下载
不同于先前的限制切割,故意删除数据,这些可以改变之前来回倾倒,因为它们不影响内部中间表示。
矿用汽车
翻车机负责输出的字符串表示一个PHP变量,使用数据对象作为输入。目的地的格式化输出随矿用汽车。
此组件提供了一个HtmlDumperHTML输出和一个CliDumper为可选颜色的命令行输出。
例如,如果你想抛弃一些$变量
只做:
1 2 3 4 5 6 7
使用ob娱乐下载\组件\VarDumper\切割\VarCloner;使用ob娱乐下载\组件\VarDumper\自动倾卸车\CliDumper;美元切割=新VarCloner ();美元自动倾卸车=新CliDumper ();美元自动倾卸车- >转储(美元切割- >cloneVar (美元变量));
通过使用构造函数的第一个参数,您可以选择输出流写入转储。默认情况下,CliDumper
写在php: / / stdout
和HtmlDumper
在php: / /输出
。但任何PHP流(资源或URL)是可以接受的。
而不是流的目的地,你也可以通过它可调用的
将多次呼吁每一行由一个垃圾场。这可调用可以配置使用一个赌徒的构造函数的第一个参数,而且使用setOutput ()方法的第二个参数dump ()方法。
例如,要获取转储为字符串变量,你能做什么:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用ob娱乐下载\组件\VarDumper\切割\VarCloner;使用ob娱乐下载\组件\VarDumper\自动倾卸车\CliDumper;美元切割=新VarCloner ();美元自动倾卸车=新CliDumper ();美元输出=”;美元自动倾卸车- >转储(美元切割- >cloneVar (美元变量),函数(美元行,美元深度)使用(&美元输出){/ /负面深度意味着“转储的终结”如果(美元深度> =0){/ /添加一个两个空格缩进美元输出=函数。' ',美元深度)。美元行。“\ n”;}});/ /输出现在的美元抛售美元表示的变量
做同样的的另一个选择可能是:
1 2 3 4 5 6 7 8 9 10 11
使用ob娱乐下载\组件\VarDumper\切割\VarCloner;使用ob娱乐下载\组件\VarDumper\自动倾卸车\CliDumper;美元切割=新VarCloner ();美元自动倾卸车=新CliDumper ();美元输出= fopen (“php: / /记忆”,“r + b”);美元自动倾卸车- >转储(美元切割- >cloneVar (美元变量),美元输出);美元输出= stream_get_contents (美元输出,1,0);/ /输出现在的美元抛售美元表示的变量
提示
你可以通过真正的
的第二个参数dump ()方法让它返回转储为字符串:
1
美元输出=美元自动倾卸车- >转储(美元切割- >cloneVar (美元变量),真正的);
3.2
返回一个字符串的能力是在Symfony 3.2中引入的。ob娱乐下载
矿用汽车实现DataDumperInterface接口,指定了转储(元数据)方法。通常他们也实现了DumperInterface,让他们重新实现逻辑需要走过数据对象的内部结构。
的HtmlDumper限制输出的字符串长度和嵌套深度使其更具可读性。这些选项可以覆盖的第三个可选参数转储(元数据)方法:
1 2 3 4 5 6 7 8 9 10
使用ob娱乐下载\组件\VarDumper\自动倾卸车\HtmlDumper;美元输出= fopen (“php: / /记忆”,“r + b”);美元自动倾卸车=新HtmlDumper ();美元自动倾卸车- >转储(美元var,美元输出,(/ / 1和160是这些选项的默认值“maxDepth”= >1,“maxStringLength”= >160年]);
3.2
支持显示选项传递给dump ()
方法是在Symfony 3.2中引入的。ob娱乐下载
翻车机的输出格式可以细调两个旗帜DUMP_STRING_LENGTH
和DUMP_LIGHT_ARRAY
这是作为位图在第三个构造函数传递参数。他们也可以通过设置环境变量在使用assertDumpEquals(过滤器,美元抛售美元,美元数据,消息)在单元测试。
的美元的过滤器
的观点assertDumpEquals ()
可以用来传递一个位域的施法者:EXCLUDE_ *
常量和影响产生的预期输出不同的脚轮。
3.4
的美元的过滤器
的观点assertDumpEquals ()
是在Symfony 3.4中引入的。ob娱乐下载
3.1
的DUMP_STRING_LENGTH
和DUMP_LIGHT_ARRAY
旗帜在Symfony 3.1中引入的。ob娱乐下载
如果DUMP_STRING_LENGTH
设置,然后旁边显示一个字符串的长度是它的内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
使用ob娱乐下载\组件\VarDumper\切割\VarCloner;使用ob娱乐下载\组件\VarDumper\自动倾卸车\AbstractDumper;使用ob娱乐下载\组件\VarDumper\自动倾卸车\CliDumper;美元varCloner=新VarCloner ();美元var= (“测试”];美元自动倾卸车=新CliDumper ();回声美元自动倾卸车- >转储(美元varCloner- >cloneVar (美元var),真正的);/ /数组:1 (/ / 0 = >“测试”/ /)美元自动倾卸车=新CliDumper (零,零,AbstractDumper::DUMP_STRING_LENGTH);回声美元自动倾卸车- >转储(美元varCloner- >cloneVar (美元var),真正的);/ /(前添加字符串长度字符串)/ /数组:1 (/ / 0 = > (4)“测试”/ /)
如果DUMP_LIGHT_ARRAY
设置,那么数组是倾倒在缩短格式类似于PHP的简单数组表示法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
使用ob娱乐下载\组件\VarDumper\切割\VarCloner;使用ob娱乐下载\组件\VarDumper\自动倾卸车\AbstractDumper;使用ob娱乐下载\组件\VarDumper\自动倾卸车\CliDumper;美元varCloner=新VarCloner ();美元var= (“测试”];美元自动倾卸车=新CliDumper ();回声美元自动倾卸车- >转储(美元varCloner- >cloneVar (美元var),真正的);/ /数组:1 (/ / 0 = >“测试”/ /)美元自动倾卸车=新CliDumper (零,零,AbstractDumper::DUMP_LIGHT_ARRAY);回声美元自动倾卸车- >转储(美元varCloner- >cloneVar (美元var),真正的);/ /(没有更多的数组:1前缀)/ / (/ / 0 = >“测试”/ /)
如果你想使用这两个选项,那么你可以将它们组合在一起使用的逻辑或运算符|
:
1 2 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\组件\VarDumper\切割\VarCloner;使用ob娱乐下载\组件\VarDumper\自动倾卸车\AbstractDumper;使用ob娱乐下载\组件\VarDumper\自动倾卸车\CliDumper;美元varCloner=新VarCloner ();美元var= (“测试”];美元自动倾卸车=新CliDumper (零,零,AbstractDumper::DUMP_STRING_LENGTH | AbstractDumper::DUMP_LIGHT_ARRAY);回声美元自动倾卸车- >转储(美元varCloner- >cloneVar (美元var),真正的);/ / (/ / 0 = > (4)“测试”/ /)
脚轮
对象和资源嵌套在一个PHP变量数组中间的“演员”数据表示。您可以自定义的数组表示每个对象/资源通过连接一个施法者到这个过程。组件已经包括许多脚轮为基地的PHP类和其他常见类。
如果你想建立自己的施法者,你可以注册一个之前克隆一个PHP变量。施法者使用切割的构造函数或其注册addCasters ()
方法:
1 2 3 4 5 6 7 8
使用ob娱乐下载\组件\VarDumper\切割\VarCloner;美元myCasters= […];美元切割=新VarCloner (美元myCasters);/ /或美元切割- >addCasters (美元myCasters);
所提供的myCasters美元
参数是一个数组映射一个类,一个接口或一个可调用的资源类型:
1 2 3 4
美元myCasters= (“FooClass”= >美元myFooClassCallableCaster,“:酒吧资源”= >美元myBarResourceCallableCaster,);
你可以注意到,资源类型由一个前缀:
防止碰撞与一个类名。
因为一个对象有一个主类和潜在许多父类或接口,许多脚轮可以应用于一个对象。在这种情况下,施法者被称为一个接一个,从施法者绑定到接口,然后父母类和主类。几个施法者也可以注册相同的资源类型/类/接口。他们被称为登记顺序。
脚轮是负责返回对象的属性或资源被克隆数组中。他们可调用的,接受5个参数:
这是一个简单的施法者不做任何:
1 2 3 4 5 6 7 8
使用ob娱乐下载\组件\VarDumper\切割\存根;函数myCaster(美元对象,美元数组,存根美元存根,美元isNested,美元过滤器){/ /……填充/改变数组美元您的需求返回美元数组;}
对于对象,美元的数组
参数是使用PHP的本地预填充(数组)
铸造运营商或的返回值$对象- > __debugInfo ()
如果魔术方法存在。然后,给出了一个施法者的返回值作为数组参数链中的下一个施法者。
当铸件(数组)
运营商,PHP前缀属性与保护\ \ 0 * 0
拥有财产和私有的类。例如,\ 0 foobar \ 0
将所有私人的前缀Foobar类型的对象的属性。脚轮按照本公约,并添加两个前缀:0 ~ \ \ 0
用于虚拟属性和\ 0 + \ 0
动态的(运行时添加属性的类声明)。
请注意
虽然可以,但建议不改变对象的状态,而铸造施法者。
提示
在编写自己的脚轮之前,您应该检查现有的。
添加与元数据语义
3.2
Symfonob娱乐下载y 3.2,施法者可以附加元数据属性存根对象告知矿用汽车倾销的精确类型值。
因为施法者是沉迷于特定的类或接口,他们知道他们操作的对象。通过改变美元的存根
对象(任何施法者的第三个参数),可以将这些知识传输给结果数据
对象,从而矿用汽车。帮你做这个(见它是如何工作的源代码),包装的组件附带了一组常见的附加的语义。您可以使用:
- ConstStub将一个值,最好由一个PHP常数;
- ClassStub包装一个PHP标识符(即。一个类名,方法名,一个接口,等。);
- CutStub更换大吵/字符串对象等。通过椭圆;
- CutArrayStub只保留一些有用的数组的键;
- EnumStub包装一组虚拟值(即。作为属性值不存在原始PHP数据结构,但清单与实际价值);
- LinkStub包装可以变成链接字符串矿用汽车;
- TraceStub和他们的
- FrameStub和
- ArgsStub包装所使用的PHP痕迹(亲戚ExceptionCaster)。
例如,如果你知道你的产品
对象有一个宣传册
属性拥有一个文件名或URL,您可以将它们LinkStub
告诉HtmlDumper
让他们点击:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\VarDumper\施法者\LinkStub;使用ob娱乐下载\组件\VarDumper\切割\存根;函数ProductCaster(产品美元对象,美元数组,存根美元存根,美元isNested,美元过滤器=0){美元数组(“手册”]=新LinkStub (美元数组(“手册”]);返回美元数组;}