php中的闭包,之前不理解。以前项目中虽然有用到,也是别人怎么用,自己也跟着怎么用,也没具体去看一下,时间长了就忘了,也不知道闭包是怎么回事。今天网上搜集了关于php闭包相关的文章,看了7,8篇,干货不多,大都复制粘贴党,现在根据自己的理解小结一下

闭包支持版本

根据官方文档里说的closure是5.3.0之后才支持以及很多文章说php是5.3.0之后才引入的,也没亲自验证过,暂时就理解为php版本大于5.3.0才有了闭包概念,支持闭包。

语法

函数:function func ($arg = xxx) {xxx};

匿名函数: 没有函数名的函数 比如 function($arg = xxx){xxx};

闭包:匿名函数加上use用法 比如 function($arg = xxx)use ($a, $b) {xxx};

对比

函数:相关语句块的集合,可以根据传入的条件完成一个小功能。

匿名函数:虽然有了函数,但是函数起名字是一件较麻烦的事,且在同一命名空间下,函数命名有可能出现重复。一旦出现重复,程序就会报错。所以有了匿名函数。

闭包:匿名函数的增加版,添加了use用法,申明时获取上下文内容,而不是调用时才获取。

闭包优点

网上说闭包有减少foreach,减少函数参数,减少递归等好处,感觉这些和闭包关系不大。个人认为,闭包带来的最大好处在于use。

php中变量有引用一说(其他语言中也有类似的说法),use中的变量存放的可能是一个变量的值拷贝,也可能是一块内存地址(类似于c语言中的指针)

use中变量存放引用(内存地址)比较好的例子计数器,简易代码如下

$start = 0;

$funcCount = function () use (&$start) {$start++; return $start;};

unset($start);

以上3行代码就定义了一个简单的计数器,变量start销毁后,由于闭包中有对start的引用,所以start之前指向的内存地址不会被回收,此时这块内存地址就脱离程序的掌控,通过$funcCount()可以访问到这块内存,执行计数操作并返回,该地址中的值修改常理来说只会被该匿名函数修改,不会被其他程序误改。

暂时就说到这里,有不对的地方,欢迎批评指正,共同进步

转载于:https://www.cnblogs.com/peter-yan/p/6763384.html

闭包(匿名函数) php相关推荐

  1. php闭包(匿名函数)中的use用法

    php的闭包(Closure)也就是匿名函数.是PHP5.3引入的. 闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量. 匿名函数中的use,其作用就是从父作用域继承变量 ...

  2. Golang的匿名函数和闭包

    1.匿名函数(anonymous) 匿名函数是一种没有函数名的函数. 在声明匿名函数之后,在其后加上调用的参数列表,即可对匿名函数进行调用 匿名函数有两种调用执行方式: (1)将匿名函数保存到变量,通 ...

  3. JavaScript 匿名函数与闭包

    匿名函数与闭包 匿名函数 闭包 概念 相关知识点 闭包中的this 循环函数中的匿名函数和闭包 循环函数中的匿名函数 循环函数中的闭包 模仿块级作用域 私有变量 静态私有变量 匿名函数 没有函数名的函 ...

  4. javascript进阶课程--第三章--匿名函数和闭包

    javascript进阶课程--第三章--匿名函数和闭包 一.总结 二.学习要点 掌握匿名函数和闭包的应用 三.匿名函数和闭包 匿名函数 没有函数名字的函数 单独的匿名函数是无法运行和调用的 可以把匿 ...

  5. php7 $this-,在PHP中如何为匿名函数指定this?

    在之前的文章中,我们已经学习过匿名函数的使用,没有看过的小伙伴可以进入传送门先去了解下闭包匿名函数的用法,传送:还不知道PHP有闭包?那你真OUT了. 关于闭包匿名函数,在JS中有个很典型的问题就是要 ...

  6. 专科 java转go 翱翔之路(一)基础语法:变量声明,匿名函数,结构体,函数,map

    本人专科!在太原干了一年了,想从java转go,上班中自学go,明年找go语言相关的工作 立帖为证! 待羽翼丰满,大风到来,便是我翱翔之时!!! 1.Go语言 1.命令 1.1 查看版本号 go ve ...

  7. php的匿名函数和闭包函数

    php的匿名函数和闭包函数 tags: 匿名函数 闭包函数 php闭包函数 php匿名函数 function use 引言:匿名函数和闭包函数都不是特别高深的知识,但是很多刚入门的朋友却总是很困惑,因 ...

  8. 自调用匿名函数(匿名闭包)解析与调用

    打开jQuery源码,首先你会看到这样的代码结构: (function(window,undefined ){ // })(); 这是一个自调用匿名函数.什么东东呢?在第一个括号内,创建一个匿名函数: ...

  9. 匿名函数 闭包 ( 7 章 )

    1: function functionName(arg0,arg1){ 2: 3: 4: 5: } 6: 7: var functionName = function( arg0 , arg1 ){ ...

  10. 好好学python·函数进阶(递归函数,回调函数,闭包函数,匿名函数,迭代器)

    函数进阶 递归函数 回调函数 闭包函数 特点 匿名函数 lambda 表达式 迭代器 iter() next() 迭代器的取值方案 迭代器取值特点,取一个少一个,直到都取完,最后再获取就会报错 检测迭 ...

最新文章

  1. url+用户名+密码_URI和URL详解
  2. 010_静态资源的配置和常用请求配置
  3. Pycharm基本操作
  4. 信息系统项目管理知识--知识产权与标准化
  5. ftp搭建后为什么登录不了??_为什么防爆胎就是普及不了?知道真相后,你也许会心凉一大截...
  6. [C++]constexpr函数
  7. 不安装游戏apk直接启动法
  8. Java数字分类给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和;A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3
  9. 女朋友跟你说晚安之后仍然在线,我用Python制作脚本成功征服
  10. MS SQL SERVER中的临时表
  11. python 求解给定字符串中的最长DNA序列长度
  12. unity2021游戏引擎安装激活并汉化
  13. 7.1 php7.0 微擎_php7.1以上微擎-人人商城小程序授权登录问题
  14. linux如何禁用独立显卡驱动,Ubuntu中独立显卡不好用如何关闭独立显卡
  15. 传奇服务器脚本文件在哪个文件夹,传奇私服的GM命令在哪个文件夹里?
  16. 千字长文讲解系统架构,系统设计看这篇就够了
  17. python如何计算字典平均值_算出字典中数值的平均值
  18. 洞察科技,感知未来:人工智能将如何改变学术搜索?
  19. vue ssr搭建服务端渲染项目
  20. 四川师范大学人文地理(7-13章)95分版本提纲

热门文章

  1. 深究AngularJS——AngularJS中的Controller(控制器)
  2. python画数学函数_Python 绘制你想要的数学函数图形
  3. 抢劫(01背包+对立事件)
  4. python装饰器深度讲解_python核心知识讲解,干货!!!
  5. windows密钥连接linux,windows使用密钥登录linux
  6. phpstorm调试php配置,PhpStorm配置Xdebug调试WordPress
  7. Linux 内核网络协议栈运行原理
  8. oracle数据连接java,java是与Oracle数据连接(jdbc)
  9. Forrester 最新报告:阿里云稳居领导者地位,引领云原生开发浪潮
  10. 如何无缝迁移 SpringCloud/Dubbo 应用到 Serverless 架构