Laravel 5.5 中给 Collections 类引入了两个新方法,使得调试比以前更方便了,他们是 dd
和 dump
。
假设你有一个简单的 collection 加了一些过滤条件。
collect([1,2,3])->map(function($i){
return $i * 2;
})->reject(function($i){
return $i < 3;
});
想知道在链式表达中每一步都发生了什么是很困难的,现在你可以选择在哪个节点上将数据“dump” 出来,或者 “dump 并 die”,例如:
collect([1,2,3])->map(function($i){
return $i * 2;
})->dump()->reject(function($i){
return $i < 3;
});
dump()
会打印该节点运行时的结果,然后程序继续运行,这是上面代码的运行结果:
Collection {#181 ▼
#items: array:3 [▼
0 => 2
1 => 4
2 => 6
]
}
然而 dd()
会立即终止程序运行并打印数据。
collect([1,2,3])->map(function($i){
return $i * 2;
})->dd()->reject(function($i){
return $i < 3;
});
结果是:
array:3 [▼
0 => 2
1 => 4
2 => 6
]
这些功能会在Laravel 5.5中被支持,如果你想开始使用这些功能,Spatie发布了一个名为Collection Macros的第三方软件包,其中包含这两种方法和一些其他辅助功能。