美文网首页
php中闭包的使用

php中闭包的使用

作者: 舒小贱 | 来源:发表于2017-11-12 16:58 被阅读0次

最重要的一句话:闭包函数继承变量的值的时候,是闭包函数定义的时候,而不是闭包函数被调用的时候。
php中,匿名函数也叫闭包函数,直接在function传入变量即可。使用时将函数当做变量使用。
例如:

$cl = function($name){
  return sprintf('hello %s',name);
}
echo $cli('fuck');

php中使用use来配合匿名函数的使用:

$message = 'hello';
$example = function() use ($message){
  var_dump($message);
};
echo $example();//输出hello
$message = 'world';
echo $example();//输出hello 因为**继承变量的值的时候是闭包函数定义的时候而不是闭包函数被调用的时候**

从上面例子看到,匿名函数的特性是:继承变量的值的时候,是闭包函数定义的时候,而不是闭包函数被调用的时候
那有什么办法来改变这种情形,让闭包函数继承的变量的值的时候,是闭包函数被调用的时候,而不是函数定义的时候呢??答案是用use+变量引用,如下例:

$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');

参考

相关文章

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • php中闭包的使用

    最重要的一句话:闭包函数继承变量的值的时候,是闭包函数定义的时候,而不是闭包函数被调用的时候。php中,匿名函数也...

  • php中的匿名函数和闭包

    php中的匿名函数和闭包(closure) 一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函...

  • PHP闭包的理解是使用

    PHP 闭包函数及Closure对象的总结 PHP的闭包 其实学习一个新的概念,除了知道怎么使用,更多的我是想知道...

  • PHP新特性之闭包、匿名函数

    闭包 闭包是什么? 1).闭包和匿名函数在PHP5.3中被引入。2).闭包是指在创建时封装函数周围状态的函数,即使...

  • predis操作redis方法大全

    predis是php连接redis的操作库,由于它完全使用php编写,大量使用命名空间以及闭包等功能,只支持php...

  • Predis 中的一些PHP操作redis的方法

    predis是php连接redis的操作库,由于它完全使用php编写,大量使用命名空间以及闭包等功能,只支持php...

  • PHP闭包实现

    闭包是指在创建时封装周围状态的函数。即使闭包所在的环境不在了,闭包中封装的状态依旧存在。注意在php中匿名函数=闭...

  • PHP 闭包

    闭包和匿名函数在php5.3中引入,闭包是指的创建时封装周围状态的函数,即便闭包所在的环境不存在了,闭包中封装的状...

  • Swift笔记<二十>闭包

    1.闭包的介绍 闭包和OC中的block非常相似 2.闭包的使用 block的定义属性和方法中带block 闭包=...

网友评论

      本文标题:php中闭包的使用

      本文链接:https://www.haomeiwen.com/subject/fxcomxtx.html