资讯专栏INFORMATION COLUMN

Debugging collections(译)

lunaticf / 2364人阅读

摘要:注本文是翻译写的关于调试技巧,读完以后很实用,分享给大家阅读过程中,翻译有错误的希望大家指正原文链接最近我一直在使用的,如果你还不了解,我简单说下一个集合就是一个功能强大的数组有很多强大处理其内部数据的函数但是唯一让我头疼的地方是如何调试的

注:本文是翻译Freek Van der Herten写的关于Collection
调试技巧,,读完以后很实用,分享给大家.阅读过程中,翻译有错误的希望大家指正,thx..
原文链接: https://murze.be/2016/06/debu...

最近我一直在使用Laravel的collection,如果你还不了解collection,我简单说下:一个collection(集合)就是一个‘功能强大’的数组,有很多强大处理其内部数据的函数.但是唯一让我头疼的地方是如何调试collection的链式操作,以下是我改善过的业务处理. 使用Collection类你可以使用链式的方式,通过操作函数来处理数据,举个例子如下(为了让代码更简短,我把函数体中的具体实现给省略了)
collect($items)
  ->filter(function() { 
     ... 
   })
   ->unique(function() { 
      ... 
   })
   ->map(function() {
     ... 
   })
   ->sortBy(function() { 
      ...
   });
想象一下如果你需要调试这段代码,你想要获取map函数的返回值,你会怎么做?那么你可能会用dd()把这"整个操作"包起来,得出返回值.
 dd(collect($items)
      ->filter(function() { 
         ... 
       })
       ->unique(function() { 
          ... 
       })
       ->map(function() {
         ... 
       }))
       ->sortBy(function() { 
          ...
       });
的确,这样足够了,整个操作的返回值也能打印出来,但是还是有点琐碎,你必须要要在每次测试操作的开始和结尾加点东西(开头:"dd(",结尾:")"),我觉得这样可读性上不太好.并且移动dd语句测试也是很麻烦,结尾的括号又特别容易被忽略,so,虽然我看似解决了这个问题,但是我敢保证如果像这样调试的话,你很快就觉得很繁琐.ok,其实是有解决方案的. laravel的Collection类是Macroable(暂且译为:可扩展的),这意味着我们可以在运行时添加相应的函数.为了提高我们调试流程,我们可以创建简单的dd macro:
Collection::macro("dd", function () {
    dd($this);
});
为了能在项目中使用这个函数,需要将以上代码放到服务提供者中.ok,如下,看下这个Blender--我们的laravel模板,举个例子 使用macro debugging调试Collection,对于我们来说变得很简单了.ok,我们来看看它如何使用.
collect($items)
  ->filter(function() { 
     ... 
   })
   ->unique(function() { 
      ... 
   })
   ->map(function() {
     ... 
   })
   ->dd()
   ->sortBy(function() { 
      ...
   });
为了测试特定链式操作的返回值,你可以将"->dd()"放到该操作的最后即可,这样一来,相比较直接"dd(....)",可读性就高了.在完成调试后,我们只需把链式操作尾部的代码去掉即可.还有你可用使用PHPStrom的快捷键"alt+shift+arrow-up" 和"alt+shift+arrow-down"可以将"->dd()"部分更方便移到前一个或下一个链式操作之后. 结语 你还可以去看Laravel的官方文档和Refactoring to Collection 试读篇章中文版:Refactoring to Collection

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30598.html

相关文章

  • []14个你可能不知道的JavaScript调试技巧

    摘要:在控制台中使用,当到达传入的函数时,代码将停止。但除了私有和匿名函数这可能是找到调试函数的最快方法。在控制台中输入,当调用时,将以调试模式停止屏蔽不相关代码现在,我们经常在应用中引入几个库或框架。 译者:SlaneYang原文:https://raygun.com/javascript-debugging-tips 以更快的速度和更高的效率来调试JavaScript 熟悉工具可以让工具...

    CODING 评论0 收藏0
  • Java语言十五讲(前言)

    摘要:发布史年月日,公司正式发布语言,这一天是的生日。年月日,发布,成为语言发展史上的又一里程碑。年月,发布,三个版本分别改为,,,。年月日,以亿美元收购公司,并取得了的版权。年月日,发布,并改用的命名方式。 特此声明:本文为本人公司郭总原创书籍的前言,该书还未出版,作为该书籍的初版在接下来的时间里,将免费在本人微信公众号内不间断更新与大家一起学习阅读。喜欢学习的小伙伴可以搜索微信公众号:程...

    endless_road 评论0 收藏0
  • 2017-06-27 前端日报

    摘要:前端日报精选漫谈函数式编程一十年踪迹的博客前端每周清单的优势与劣势有望超越在嵌入式及物联网的应用现状进阶系列高阶组件详解一前端之路译如何充分利用控制台掘金程序猿升级攻略众成翻译中文译如何充分利用控制台掘金前端从强制开启压缩探 2017-06-27 前端日报 精选 漫谈 JS 函数式编程(一) - 十年踪迹的博客前端每周清单: Vue的优势与劣势;Node.js有望超越Java;JS在嵌...

    Eidesen 评论0 收藏0

发表评论

0条评论

lunaticf

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<