先进的VarDumper组件的使用
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 4.3,不再维护。
读这个页面的更新版本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娱乐下载 - setMaxString ()
-
配置的最大字符数,将克隆在切割之前太长的字符串。指定
1
消除了极限。
在倾销它之前,您可以进一步限制所产生的数据对象使用以下方法:
- withMaxDepth ()
- 深度尺寸限制转储。
- withMaxItemsPerDepth ()
- 限制了每级深度的项的数量。
- withRefHandles ()
- 删除内部对象的处理稀疏的输出(用于测试)。
- 寻求()
- 只选择的时候已经克隆数组、对象或资源。
不同于先前的限制切割,故意删除数据,这些可以改变之前来回倾倒,因为它们不影响内部中间表示。
矿用汽车
翻车机负责输出的字符串表示一个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);/ /输出现在的美元抛售美元表示的变量
矿用汽车实现DataDumperInterface接口,指定了转储(元数据)方法。通常他们也实现了DumperInterface,让他们重新实现逻辑需要走过数据对象的内部结构。
的HtmlDumper默认使用一个黑暗的主题。使用setTheme ()方法用浅色的主题:
1 2
/ /……美元htmlDumper- >setTheme (“光”);
的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年]);
翻车机的输出格式可以细调两个旗帜DUMP_STRING_LENGTH
和DUMP_LIGHT_ARRAY
这是作为位图在第三个构造函数传递参数。他们也可以通过设置环境变量在使用assertDumpEquals(过滤器,美元抛售美元,美元数据,消息)在单元测试。
的美元的过滤器
的观点assertDumpEquals ()
可以用来传递一个位域的施法者:EXCLUDE_ *
常量和影响产生的预期输出不同的脚轮。
如果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
动态的(运行时添加属性的类声明)。
请注意
虽然可以,但建议不改变对象的状态,而铸造施法者。
提示
在编写自己的脚轮之前,您应该检查现有的。
添加与元数据语义
因为施法者是沉迷于特定的类或接口,他们知道他们操作的对象。通过改变美元的存根
对象(任何施法者的第三个参数),可以将这些知识传输给结果数据
对象,从而矿用汽车。帮你做这个(见它是如何工作的源代码),包装的组件附带了一组常见的附加的语义。您可以使用:
- 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 (美元数组(“手册”]);返回美元数组;}