php匿名函数为何不匿名,php匿名函数和回调函数

  php匿名函数为何不匿名,php匿名函数和回调函数

  PHP中匿名函数如何指定这个?在上一篇文章中,我们已经学习了匿名函数的使用。没看过的可以进入门户了解一下闭包下匿名函数的使用。传输:你不知道PHP有闭包吗?那真的是出于你。

  至于闭包的匿名函数,JS中的一个典型问题就是用这个作用域绑定它。其实这个问题在PHP中也存在,比如下面这段代码:

  $func=函数($say){

  echo $this- name,:,$say,PHP _ EOL

  };

  $ func( good );//fatalerror:未捕获错误:使用$this当不在此匿名函数的对象上下文中时,我们使用\$this- name获取当前作用域下的$name属性。但是,这$这是谁?我们没有定义,这里直接报错。错误是:使用了$this但是没有对象上下文,也就是没有指定$this引用的范围。

  BindTo()方法绑定$this。好吧,那我们给它一个范围。就像JS一样,使用bindTo()方法。

  $func1=$func- bindTo($lily, Lily );

  //$func1=$func- bindTo($lily,Lily:class);

  //$func1=$func- bindTo($lily,$ lily);

  $ func 1( cool );这次可以正常输出了。bindTo()方法是复制一个当前闭包对象,然后用$this作用域和class作用域绑定。其中$lily参数是一个对象$newthis参数,也就是为这个复制的匿名函数指定了$this。第二个参数 Lily 是绑定一个新的类作用域,它表示一个类型,并确定在这个匿名函数中可以调用哪些私有和受保护的方法。上述示例中给出的三种方法可用于定义该参数。如果不给出这个参数,那么我们就不能访问这个私有的$name属性:

  $ func 2=$ func-bind to($ lily);

  $ func 2( cool 2 );//fatalerror:未捕获的错误:无法访问私有属性lily: $ namecall()方法绑定$this。PHP7之后,PHP新加入了匿名函数$this绑定的call()方法。让我们看看它和bindTo()方法的区别。

  $func- call($lily,‘嗯’);//莉莉:嗯,嗯.

  是不是感觉方便多了?首先是直接执行,不需要赋给变量,即直接执行而不是复制闭包函数;其次,没有类范围的概念。第一个参数仍然指定新$this的点,后面的参数是原来闭包函数的参数。

  虽然方便,但也带来了另一个问题,因为没有类范围的限制,所以会打破封装。您设法做出的面向对象的设计封装了一堆属性,然后使用这个调用()来公开对象的所有私有和受保护的内容。当然这也要看我们自己的经营情况。毕竟我们在写代码的时候可以自由选择两种形式。

  其实总结包括了闭包函数,这些功能和JS很像。这也是语言融合的一个趋势。无论是学习JS看PHP的这些特性,还是先学习PHP再看JS,都会让我们更容易理解它们的功能和能力,这就是语言特性集成的好处。反正就是学,继续加油!

  测试代码:

  3359 github . com/zhangyue 0503/dev-blog/blob/master/PHP/202002/source/PHP中匿名函数如何指定这个?php

  参考文件:

  https://www.php.net/manual/zh/functions.anonymous.php

  https://www.php.net/manual/zh/closure.bindto.php

  https://www.php.net/manual/en/closure.call.php

  版权归作者所有:原创作品来自博主,码农老张,转载请联系作者获得授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 七种php开发环境搭建工具有哪些,七种php开发环境搭建工具包括
  • 七种php开发环境搭建工具有哪些,七种php开发环境搭建工具包括,七种PHP开发环境搭建工具
  • php高并发三种解决方法,php 高并发解决方案
  • php高并发三种解决方法,php 高并发解决方案,PHP解决高并发问题(opcache)
  • php邮件发送的两种方式区别,php邮件发送的两种方式是什么
  • php邮件发送的两种方式区别,php邮件发送的两种方式是什么,php邮件发送的两种方式
  • php跳转页面的几种实现方法详解图,php跳转页面的几种实现方法详解视频
  • php跳转页面的几种实现方法详解图,php跳转页面的几种实现方法详解视频,PHP跳转页面的几种实现方法详解
  • PHP购物车,php立即购买和购物车功能
  • PHP购物车,php立即购买和购物车功能,php实现购物车功能(上)
  • php读取pdf数据,php pdf读取
  • php读取pdf数据,php pdf读取,PHP中使用mpdf 导出PDF文件的实现方法
  • php网站判断用户是否是手机访问的方法有哪些,php如何判断用户是否登录
  • 留言与评论(共有 条评论)
       
    验证码: