作者:袁韦伦世彦琬育 | 来源:互联网 | 2014-11-23 09:19
闭包函数是在PHP5.3版本才引入的了,闭包函数也就是匿名函数函数了,这个与js中的匿名函数很像了,下面我们来看看php匿名函数吧.php闭包函数比如你现在就可以这样使用:$closure=function($param)...
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
php中闭包函数的用法实例
发布: 来源: 添加日期:2014-09-13 09:39:25 浏览: 评论:0
闭包函数是在PHP5.3版本才引入的了,闭包函数也就是匿名函数函数了,这个与js中的匿名函数很像了,下面我们来看看php匿名函数吧.
php闭包函数比如你现在就可以这样使用:
$closure = function($param) { echo $param; };
感觉和js是不是一样的用法了,一些闭包函数实例,代码如下:
- function test(){
- $test='';
- $test=function ($str){
- echo 'test';
- return $str;
- };
- timeout('Y-m-d H:i:s',function ($time){
-
- return $time-24*60*60;
- });
-
- var_dump($test(‘hello word!’));
-
- }
- function timeout($format,$time){
- echo date($format,$time(time()));
- }
- test();
上例输出:2013-11-19 16:24:56teststring(11) “hello word!”
这样子参数便可以用函数了,条件是,php3.0以后php 4.0以后闭包函数支持$this用法,闭包函数通常被用在preg_match等有callback的函数,代码如下:
- class A {
- private static $sfoo = 1;
- private $ifoo = 2;
- }
- $cl1 = static function() {
- return A::$sfoo;
- };
- $cl2 = function() {
- return $this->ifoo;
- };
-
- $bcl1 = Closure::bind($cl1, null, ‘A’);
- $bcl2 = Closure::bind($cl2, new A(), ‘A’);
- echo $bcl1(), “n”;
- echo $bcl2(), “n”;
- ?>
-
- 1
- 2
bind将类可以在闭包函数中使用,代码如下:
- class A1 {
- function __construct($val) {
- $this->val = $val;
- }
- function getClosure() {
-
- return function() { return $this->val; };
- }
- }
-
- $ob1 = new A1(1);
- $ob2 = new A1(2);
-
- $cl = $ob1->getClosure();
- echo $cl(), “n”;
- $cl = $cl->bindTo($ob2);
- echo $cl(), “n”;
- ?>
-
- 1
- 2
bindto在类里可以再次绑定类,代码如下:
- $fn = function(){
- return ++$this->foo;
- };
-
- class Bar{
- private $foo = 1;
- }
-
- $bar = new Bar();
-
- $fn1 = $fn->bindTo($bar, ‘Bar’);
- $fn2 = $fn->bindTo($bar, $bar);
- $fn3 = $fn2->bindTo($bar);
-
- echo $fn1();
- echo $fn2();
- echo $fn3();
在类之外需要绑定类才能用,绑定可以是类名,也可以是对象,绑定过之后可以再次绑定不需要提拱类名或对象.
推荐阅读
-
本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ...
[详细]
蜡笔小新 2024-11-23 19:57:51
-
权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ...
[详细]
蜡笔小新 2024-11-23 16:30:15
-
-
本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ...
[详细]
蜡笔小新 2024-11-23 15:50:03
-
本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ...
[详细]
蜡笔小新 2024-11-23 15:39:25
-
官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ...
[详细]
蜡笔小新 2024-11-23 10:29:06
-
本文提供了处理WordPress网站中出现过多重定向问题的方法,包括检查DNS配置、安装SSL证书以及解决数据库连接错误等步骤。 ...
[详细]
蜡笔小新 2024-11-22 19:59:07
-
本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ...
[详细]
蜡笔小新 2024-11-22 19:32:32
-
随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ...
[详细]
蜡笔小新 2024-11-22 19:15:42
-
计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ...
[详细]
蜡笔小新 2024-11-22 11:13:36
-
本文列举了构建和运行 Struts2 应用程序所需的核心 JAR 文件,包括文件上传、日志记录、模板引擎等关键组件。 ...
[详细]
蜡笔小新 2024-11-24 04:42:19
-
做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ...
[详细]
蜡笔小新 2024-11-24 03:05:20
-
本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ...
[详细]
蜡笔小新 2024-11-23 11:40:33
-
本文介绍了MySQL窗口函数的基本概念、应用场景及常见函数的使用方法。窗口函数在处理复杂查询时非常有用,例如计算每个用户的订单排名、环比增长率、以及动态聚合等。 ...
[详细]
蜡笔小新 2024-11-23 02:53:38
-
本文详细介绍了如何解决在使用ADODB连接Access数据库时遇到的80004005错误,包括错误原因分析和具体的解决步骤。 ...
[详细]
蜡笔小新 2024-11-22 19:27:04
-
本文详细解析了MySQL中常见的几种错误,并提供了具体的解决方法,帮助开发者快速定位和解决问题。 ...
[详细]
蜡笔小新 2024-11-22 14:15:56
-