链式编程或链式写作,就是将多个方法(函数)通过??点(.)或(->)等符号链接在一起,成为一行代码,这不仅增强了代码的可读性,而且每次建立链接时都会对对象的属性和状态进行操作和更改。不管是后台语言还是前端开发,现在很多很多的写法都变了,更多的是链式的写法——也就是直接把前面函数的结果作为起点或者变量下一个要执行的方法。本文将简单罗列一下不同语言的链式写法,算是一个总结吧。tap全局函数update(['name'=>$name,'age'=>$age,]);当我们传入一个$usermodel给tap方法时,我们可以链式更新方法返回boolean类型。因为我们使用了tap函数,update方法返回了用户模型对象。您可以继续链接Model方法来操作用户模型对象。其实在写一些第三方插件的时候,我们通常会使用链式套路和写方法,比如PHP中的魔术方法__call():publicfunction__call($method,$args){$map=['template'=>'template_id','templateId'=>'template_id','uses'=>'template_id','to'=>'touser','receiver'=>'touser','color'=>'topcolor','topColor'=>'topcolor','url'=>'url','miniprogram'=>'miniprogram','link'=>'url','data'=>'data','with'=>'数据',];如果(0===stripos($method,'with')&&strlen($method)>4){$method=lcfirst(substr($method,4));}if(0===stripos($method,'and')){$method=lcfirst(substr($method,3));}if(isset($map[$method])){$this->message[$map[$method]]=array_shift($args);}return$this;}有了这个神奇的方法,链式写法感觉很好:yield$this->bnotice->template($templateid)->to($v)->url($url)->数据($数据)->请求();链式写法在Promise中也很常见。在ES6Promise中,promises的真正力量在于多个链接。调用promise.then(func)时,返回一个新的Promise,直到上一个完成后才会执行。只要条件允许,可以保留then(),比如gulpchain的写法。Gulp是目前最流行的前端构建工具之一,也是npm上最流行的工具之一。它的出现让前端开发变得非常方便。和webpack不一样,属于流处理文件,简单明了。其中,gulp.pipe()处理流程是将上一步的输出作为下一步的输入:Glide链编写Glide,谷歌推荐的图片加载库。在写Android代码的时候,我喜欢这种链式的写法:Masonry链式的写法在iOS开发中使用masonry框架实现自动布局时也很常见://设置约束[demoViewmas_makeConstraints:^(MASConstraintMaker*make){//设置top约束为距self.view顶部100make.top.equalTo(self.view).offset(100);//设置左约束make.left.equalTo(self.view).offset(20);//设置右侧约束make.right.equalTo(self.view).offset(-20);//设置高度make.height.equalTo(@50);}];简单罗列一些链式写法,无论是后台语言、前端语言、工具,还是Android、iOS开发,这种链式写法得到了很多开发者的好评。这种链式法则是:将对象传入各个方法函数进行逻辑处理,然后返回对象,再进入下一个方法,周而复始,此时对象的属性和对象都发生了变化。就像一个人不断进入不同的环境来磨练——进入一个环境磨练自己,然后离开,再进入下一个环境继续镀金,最后回归自我,但此时的【自我】已经通过不同的方式获得了[环境]。锻炼身体,变成不一样的自己~~~
