Closure 用于获取并使用匿名函数、将匿名函数绑定到具体的类,从而实现对匿名函数的更多控制。
举个例子:

#不绑定,直接使用匿名函数$f = function ($var){return $var;
};function getClosure(Closure $f,$var){return $f($var);
}echo getClosure($f,'closure');
#将匿名函数绑定到类再使用class dog{public $food = 'Bone';
}$eat = function (){echo 'eat '.$this->food.PHP_EOL;
};$eat_food = Closure::bind($eat,new dog());
$eat_food();

CLosure的绑定有两种方式:

    /**@param Closure $closure 用来绑定的匿名函数.*@param object $newthis 设置匿名函数应该绑定到的对象, NULL表示不绑定到*@param mixed $newscope 设置匿名函数的类作用域,默认值是 'static', 表示不改变*/public static Closure bind (Closure $closure , object $newthis [, mixed $newscope = 'static' ])/**@param object $newthis 设置匿名函数应该绑定到的对象, NULL表示不绑定到*@param mixed $newscope 设置匿名函数的类作用域,默认值是 'static', 表示不改变*/public Closure bindTo (object $newthis [, mixed $newscope = 'static' ])

举例说明具体用法:

class cat{public $food='fish';
}class dog{private $food = 'Bone';
}class pig{private static $food = 'Rice';
}class monkey{private static $food = 'Banana';
}$eat = function (){echo 'eat '.$this->food.PHP_EOL;
};$eat_ = static function (){echo 'eat '.self::$food.PHP_EOL;
};$eat_food = Closure::bind($eat_,null,new pig());
$eat_food();//eat Rice
$eat_food = Closure::bind($eat,new cat());
$eat_food();//eat fish
$eat_food = Closure::bind($eat,new dog(),'dog');
$eat_food();//eat Bone
$eat_food = $eat_->bindTo(null,'monkey');
$eat_food();//eat Banana

Closure 代表匿名函数的类相关推荐

  1. colsure php_PHP_PHP中Closure类的使用方法及详解,Closure,匿名函数,又称为Anonym - phpStudy...

    PHP中Closure类的使用方法及详解 Closure,匿名函数,又称为Anonymous functions,是php5.3的时候引入的.匿名函数就是没有定义名字的函数.这点牢牢记住就能理解匿名函 ...

  2. lua中的闭包(closure或者匿名函数)的作用

    闭包和upvalue lua构建一个新的函数时, 会创建一个函数对象, 其中包含了函数本身的原型还有函数使用到的外部变量或者常量. 当这个新的函数处于某个函数内部, 我们将这个对象称之为闭包, 它所引 ...

  3. php 匿名方法,PHP基于Closure类创建匿名函数的方法详解

    本文实例讲述了PHP基于Closure类创建匿名函数的方法.分享给大家供大家参考,具体如下: Closure 类 用于代表匿名函数的类. 匿名函数(在 PHP 5.3 中被引入)会产生这个类型的对象. ...

  4. PHP学习笔记(一):理解匿名函数与Closure

    1.PHP里的匿名函数实质是Closure类的实例 (1)不能自己实例化Closure类型的对象,会触发一个Error try{$closure = new \Closure(); }catch(Er ...

  5. Php中方法作用域,PHP 函数(下):匿名函数和作用域

    PHP 函数(下):匿名函数和作用域 由 学院君 创建于9个月前, 最后更新于 7个月前 版本号 #2 2282 views 1 likes 1 collects 匿名函数 从 PHP 5.3 开始, ...

  6. myfunc matlab,为matlab匿名函数设置’help’

    您可以创建自己的匿名函数处理类,它将模仿此功能,仅为此对象类型隐藏帮助函数. 我已经编写了下面的类,但是首先会显示用法,它只需要在你的路径上有一个类,并稍微调整你声明匿名函数的方式: 我们也可以覆盖此 ...

  7. Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记

    Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记 根据 JSR 335, Java 终于在 Java 8 中引入了 Lambda 表达式.也称之为闭包或者匿名函数. ...

  8. php里面用魔术方法和匿名函数闭包函数动态的给类里面添加方法

    1.认识  __set  (在给不可访问属性赋值时,__set() 会被调用) 也就是说你再访问一个类里面没有的属性,会出发这个方法 class A{private $aa = '11';public ...

  9. 类中匿名函数如何从 event 中去除

    匿名函数在各种event中如鱼得水的到处使用. 可是 把attach 到 Event  中的这些匿名函数 detach 是一个恼人的问题. 不建议在类的内部做一个 List<fn> , 这 ...

最新文章

  1. Beyond Compare进行内容替换的方法有哪些
  2. javaGUI猜生日游戏
  3. JVM -verbose参数详解(转)
  4. Linux大作业任务书,《Linux系统管理》期末大作业任务书(2014.12)(1).doc
  5. oracle的错误代码如何查看对应的错误信息
  6. oracle中least()和greastest()函数的使用,其中还包含一些if...then..elseif的使用
  7. HDU 4738 无向图求桥
  8. CSP202104-4 校门外的树
  9. try固定搭配_regret cease try等词的固定搭配用法
  10. 会计未来十年发展趋势_谈未来十年会计行业的发展趋势
  11. 实用的Google搜索技巧
  12. M1 MacBook Pro外扩多屏显示器方法
  13. 图像特效---(Sketch Filter)素描滤镜
  14. java毕业设计中山乡村文化旅游网络平台Mybatis+系统+数据库+调试部署
  15. SystemVerilog学习-10-验证量化和覆盖率
  16. xp系统打印机服务器设置,WinXP打印机纸张规格设置的方法
  17. java调用face_【AI】Java+Fileupload+JSTL+Face++实现人脸识别系统
  18. Peter Schiff:如果大饼跌破3万刀,那么它将跌破1万
  19. 异常处理try_except-else-finally
  20. Matlab函数之prctile

热门文章

  1. vuejs项目如何修改node_mudule为公用文件?
  2. 微信群接龙报名小程序功能模块源码V1.1.38
  3. 用英语描述计算机操作,操作系统的英文介绍
  4. pb的webserver增加的方法发布后没有显示_震惊!!!Diboot 2.0.5 发布,让开发工作又快又爽...
  5. 阿里助手 5.12.2
  6. 帝国cms listinfo.php,帝国CMS动态列表应用之在列表中显示指定的会员组会员发布的信息...
  7. systemtap PHP,systemtap初体验
  8. Java底层抛出异常_总结java的exception
  9. npm run report,打包,包资源 ,vue大小,vue资源大小
  10. 地方微信群分享小程序源码,自带流量主独立版