PHP闭包定义与使用简单示例

本文实例讲述了PHP闭包定义与使用。分享给大家供大家参考,具体如下:

<?php
function getClosure($i)
{
  $i = $i.'-'.date('H:i:s');
  return function ($param) use ($i) {
    echo "--- param: $param ---\n";
    echo "--- i: $i ---\n";
  };
}
$c = getClosure(123);
$i = 456;
$c('test');
sleep(3);
$c2 = getClosure(123);
$c2('test');
$c('test');
/*
output:
--- param: test ---
--- i: 123-21:36:52 ---
--- param: test ---
--- i: 123-21:36:55 ---
--- param: test ---
--- i: 123-21:36:52 ---
*/

再来一个实例

$message = 'hello';
$example = function() use ($message){
 var_dump($message);
};
echo $example();
//输出hello
$message = 'world';
//输出hello 因为继承变量的值的时候是函数定义的时候而不是 函数被调用的时候
echo $example();
//重置为hello
$message = 'hello';
//此处传引用
$example = function() use(&$message){
 var_dump($message);
};
echo $example();
//输出hello
$message = 'world';
echo $example();
//此处输出world
//闭包函数也用于正常的传值
$message = 'hello';
$example = function ($data) use ($message){
 return "{$data},{$message}";
};
echo $example('world');
//此处输出world,hello

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》及《PHP运算与运算符用法总结》、

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:

  • PHP闭包(Closure)使用详解
  • PHP闭包函数详解
  • php的闭包(Closure)匿名函数详解
  • PHP闭包函数传参及使用外部变量的方法
  • 浅谈PHP 闭包特性在实际应用中的问题
  • PHP中的闭包(匿名函数)浅析
  • PHP闭包实例解析
  • php的闭包(Closure)匿名函数初探
  • PHP 闭包详解及实例代码
  • php基于闭包实现函数的自调用(递归)实例分析
  • PHP 闭包获取外部变量和global关键字声明变量的区别讲解
  • 浅析PHP中的闭包和匿名函数
  • PHP基于闭包思想实现的BT(torrent)文件解析工具实例详解
(0)

相关推荐

  • php的闭包(Closure)匿名函数详解

    php的闭包(Closure)也就是匿名函数,是PHP5.3引入的. 闭包的语法很简单,需要注意的关键字就只有use,use是连接闭包和外界变量. 复制代码 代码如下: $a = function() use($b) {} 简单例子如下: 复制代码 代码如下: function callback($fun) { $fun(); } $msg = "Hello, everyone"; $fun = function () use($msg) { print "This is a

  • PHP中的闭包(匿名函数)浅析

    闭包也叫匿名函数 PHP5.3 引入. 使用方法 需要调整数组元素中的值 复制代码 代码如下: $data = range(0, 100);//想要每个元素的值都加上.html的后缀 $suffix = '.html'; function makeSuffix($str, $suffix) {     return $str . $suffix; } $new_data = array_map(function($item) use ($suffix) {     return makeSuff

  • PHP基于闭包思想实现的BT(torrent)文件解析工具实例详解

    本文实例讲述了PHP基于闭包思想实现的torrent文件解析工具.分享给大家供大家参考,具体如下: PHP对静态词法域的支持有点奇怪,内部匿名函数必须在参数列表后面加上use关键字,显式的说明想要使用哪些外层函数的局部变量. function count_down($count) { return $func = function() use($count,$func) { if(--$count > 0) $func(); echo "wow\n"; }; } $foo = c

  • 浅谈PHP 闭包特性在实际应用中的问题

    呃,其实大部分情况下是可以的,而有些方面还是令人非常的困扰,下面慢慢道来. 很多语言的都提供了非常优雅和漂亮的操作数组的方法.在下面的例子中,会使用 PHP5.3 以及其他语言提供的闭包功能,用于展示如何"客观的"操作迭代数组. 译注:原文作者比较火星,我不了解 Groovy 以及 Scala 语言,所以这里我加上 Javascript 的实现. 在开始之前先说明下,本例子仅仅是阐明观点,并没有考虑性能等其他方面的因素. "货比三家" 用个简单的例子开始,有下面个数

  • PHP闭包(Closure)使用详解

    不知不觉发现PHP已经出到了5.5版本,而自己一直在用PHP5.2,让我看起来像深山出来的小伙子一样,又土又落后.在我习惯在javascript中使用闭包之后,忽然间对PHP的闭包打起了兴趣. 于是乎在网上下了个WAMP集成开发环境,是PHP5.3版本的(PHP5.3开始引入了闭包的特性),不得不说WAMP安装使用真的很方便.简单配置了一下,开始动手. 匿名函数提到闭包就不得不想起匿名函数,也叫闭包函数(closures),貌似PHP闭包实现主要就是靠它.声明一个匿名函数是这样: 复制代码 代码

  • PHP 闭包获取外部变量和global关键字声明变量的区别讲解

    最近在学习workerman的时候比较频繁的接触到回调函数,使用中经常会因为worker的使用方式不同,会用这两种不同的方式去调用外部的worker变量,这里就整理一下PHP闭包获取外部变量和global关键字声明变量的区别. 闭包 闭包是一个常见的概念,我们通常可以将其与回调函数配合使用,可以使代码更加简洁易读. 闭包可以 通过拷贝的方式 让函数使用父作用域中的变量.如: $global = 'hello'; $bbb = function()use($global){ echo $globa

  • PHP闭包函数详解

    匿名函数也叫闭包函数(closures允许创建一个没有指定没成的函数,最经常用作回调函数参数的值. 闭包函数没有函数名称,直接在function()传入变量即可 使用时将定义的变量当作函数来处理 $cl = function($name){ return sprintf('hello %s',name); } echo $cli('fuck')` 直接通过定义为匿名函数的变量名称来调用 echo preg_replace_callback('~-([a-z])~', function ($mat

  • php的闭包(Closure)匿名函数初探

    提到闭包就不得不想起匿名函数,也叫闭包函数(closures),貌似PHP闭包实现主要就是靠它.声明一个匿名函数是这样: $func = function() { }; //带结束符 可以看到,匿名函数因为没有名字,如果要使用它,需要将其返回给一个变量.匿名函数也像普通函数一样可以声明参数,调用方法也相同: $func = function( $param ) { echo $param; }; $func( 'some string' ); //输出: //some string 顺便提一下,

  • PHP闭包实例解析

    本文实例分析了PHP程序设计中闭包的概念机用法,分享给大家供大家参考.具体分析如下: 通常来说,闭包也就是PHP的匿名函数, 但是和函数不同的是,闭包可以通过use使用函数声明时所在作用域的变量的值. 具体形式如下: $a = function($arg1, $arg2) use ($variable) { // 声明函数闭包到变量$a, 参数为$arg1, $arg2 ,该闭包需使用$variable变量 } 具体用法实例如下: <?php $result = 0; $one = functi

  • 浅析PHP中的闭包和匿名函数

    闭包是指在创建时封装周围状态的函数.即使闭包所在的环境不存在了,闭包中封装的状态依然存在. 匿名函数就是没有名称的函数.匿名函数可以赋值给变量,还能像其他任何PHP对象那样传递.不过匿名函数仍是函数,因此可以调用,还可以传入参数.匿名函数特别适合作为函数或方法的回调. 注意:理论上讲,闭包和匿名函数是不同的概念.不过,PHP将其视作相同的概念.所以,我们提到闭包时,指的也是匿名函数,反之亦然. PHP闭包和匿名函数使用的句法与普通函数相同,但闭包和匿名函数其实是 伪装成函数的对象(Closure

  • PHP 闭包详解及实例代码

    闭包和匿名函数在PHP5.3.0中引入的. 闭包是指:创建时封装周围状态的函数.即使闭包所处的环境不存在了,闭包中封装的状态依然存在. 理论上,闭包和匿名函数是不同的概念.但是PHP将其视作相同概念. 实际上,闭包和匿名函数是伪装成函数的对象.他们是Closure类的实例. 闭包和字符串.整数一样,是一等值类型. 创建闭包 <?php $clousre = function ($name) { return 'Hello ' . $name; }; echo $closure('nesfo');

  • php基于闭包实现函数的自调用(递归)实例分析

    本文实例讲述了php基于闭包实现函数的自调用(递归)的方法.分享给大家供大家参考,具体如下: php的闭包可能不常用,但是在某些场合之下还是可以考虑用php的闭包来实现某些功能的,比如递归,这里讲一下用php的闭包实现递归 //php闭包实现函数的自调用,也就是实现递归 function closure($n,$counter,$max){ //匿名函数,这里函数的参数加&符号是,引址调用参数自己 $fn = function (&$n,&$counter,&$max=1)

  • PHP闭包函数传参及使用外部变量的方法

    本文实例讲述了PHP闭包函数传参及使用外部变量的方法.分享给大家供大家参考,具体如下: 在Laravel控制器写两个方法,一个是在内部创建一个闭包函数,一个是执行传过来的闭包函数,测试闭包的写法,use使用外部变量,及闭包函数的传参.如下: //测试闭包传参及use使用外部变量 public function testClosure($t1, $t2) { $closure = function ($param1, $param2) use ($t1, $t2) { echo $param1.$

随机推荐