广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP中匿名函数的作用是什么
  • 586
分享到

PHP中匿名函数的作用是什么

2023-06-17 15:06:35 586人浏览 安东尼
摘要

这期内容当中小编将会给大家带来有关PHP中匿名函数的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。◆字符串的函数名◆使用create_function的返回51CTO推荐专题:php开发基础入门

这期内容当中小编将会给大家带来有关PHP中匿名函数的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

字符串的函数名

◆使用create_function的返回

51CTO推荐专题:php开发基础入门

在PHP5.3以后, 我们多了一个选择, 也就是Closure。

$func = function () { ... };  array_walk($arr, $func);

从实现上来说, ***种方式: 传递函数名字符串是最简单的。而第二种方式create_function, 其实和***种方式本质上一样的, create_function返回一个字符串的函数名, 这个函数名的格式是:

"\000_lambda_" . count(anonymous_functions)++

我们来看看create_function的实现步骤:

获取参数, 函数体;

拼凑一个"function __lambda_func (参数) { 函数体;} "的字符串;

eval;

通过__lambda_func在函数表中找到eval后得到的函数体, 找不到就出错;

定义一个函数名:"\000_lambda_" . count(anonymous_functions)++;

用新的函数名替换__lambda_func;

返回新的函数。

我们来验证下:

<?php create_function("", 'echo __FUNCTION__;');  call_user_func("\000lambda_1", 1);  ?> //输出  __lambda_fun

因为在eval的时候, 函数名是”__lambda_func”, 所以匿名函数内会输出__lambda_func, 而因为***用”\000_lambda_”.count(anonymous_functions)++重命名了函数表中的”__lambda_func”函数, 所以可通过”\000_lambda_” . count(anonymous_functions)++调用这个匿名函数。为了证实这一点, 可以将create_function的返回值dump出来查看。

而在PHP 5.3发布的时候, 其中有一条new feature就是支持闭包/Lambda Function, 我***反应是以为zval新增了一个IS_FUNCTION, 但实际上是构造了一个PHP 5.3引入的Closure”类”的实例, Closure类的构造函数是私有的, 所以不能被直接实例化, 另外Closure类是Final类, 所以也不能做为基类派生子类.

//php-5.3.0  $class = new ReflectionClass("Closure");  var_dump($class->isInternal());  var_dump($class->isAbstract() );  var_dump($class->isFinal());  var_dump($class->isInterface());  //输出:  bool(true)  bool(false)  bool(true)  bool(false)  ?>

而PHP 5.3中对闭包的支持, 也仅仅是把要保持的外部变量, 做为Closure对象的”Static属性”(并不是普通意义上的可遍历/访问的属性).

//php-5.3.0  $b = "laruence";  $func = function($a) use($b) {};  var_dump($func);  

上述就是小编为大家分享的PHP中匿名函数的作用是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网PHP编程频道。

--结束END--

本文标题: PHP中匿名函数的作用是什么

本文链接: https://www.lsjlt.com/news/290110.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP中匿名函数的作用是什么
    这期内容当中小编将会给大家带来有关PHP中匿名函数的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。◆字符串的函数名◆使用create_function的返回51CTO推荐专题:PHP开发基础入门...
    99+
    2023-06-17
  • PHP中匿名函数指的是什么
    这篇文章主要介绍PHP中匿名函数指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是匿名函数?如果声明一个函数,而该函数没有函数名,那么这个函数就是匿名函数用法:用变量接收匿名函数变量名= fun...
    99+
    2023-06-15
  • python中什么是匿名函数
    python中什么是匿名函数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开...
    99+
    2023-06-14
  • PHP中匿名函数怎么用
    这篇文章主要介绍PHP中匿名函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! PHP中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数。最...
    99+
    2023-06-14
  • golang匿名函数是什么
    Golang中的匿名函数是一种没有明确名称的函数。它可以在需要函数的地方直接定义和使用,而不需要事先声明一个函数。 匿名函数可以作为...
    99+
    2023-10-22
    golang
  • Python匿名函数的用法是什么
    Python中的匿名函数也称为lambda函数,它是一种没有名称的函数。匿名函数通常用于需要一个简单的函数,但不希望为其命名的情况下...
    99+
    2023-10-24
    Python
  • python中匿名函数的优势是什么
    python中匿名函数的优势是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
  • php中匿名回调是什么
    这篇文章将为大家详细讲解有关php中匿名回调是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。匿名回调格式:调用函数(传入你明个函数)回调函数的区别:以字符串方式传入的回调函数以匿名函数方式传入的回调函...
    99+
    2023-06-15
  • 如何在PHP中使用匿名函数
    在PHP语言中,匿名函数也被称作闭包(Closure),是一种可以在运行时定义、使用的函数,而无需提前进行命名。相较于普通函数,匿名函数可以直接作为一个变量使用并传递给其他函数,同时可以访问到其所处环境的变量值。匿名函数的语法格式如下:$f...
    99+
    2023-05-18
    PHP匿名函数 PHP闭包函数 PHP Lambda函数
  • Python的递归函数与匿名函数调用方法是什么
    本篇内容主要讲解“Python的递归函数与匿名函数调用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的递归函数与匿名函数调用方法是什么”吧!一. 递归函数  a) 引言:在...
    99+
    2023-06-01
  • golang的匿名函数和普通函数的区别是什么
    今天小编给大家分享一下golang的匿名函数和普通函数的区别是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。golang...
    99+
    2023-07-05
  • 【PHP】函数-作用域&可变函数&匿名函数&闭包&常用系统函数
    文章目录 函数定义&使用命名规则参数种类默认值引用传递函数返回值return关键字 作用域global关键字静态变量 可变函数匿名函数闭包常用系统函数输出函数时间函数数学函数与函数相关...
    99+
    2023-08-31
    php 开发语言
  • LINQ匿名类型的作用是什么
    LINQ匿名类型的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。下面的示例提供了一个更复杂和更实际的场景。它把我们的城市列表转换成一个分层的结果集合──我们将使用...
    99+
    2023-06-17
  • 为什么不使用JS匿名函数
    这篇文章主要讲解了“为什么不使用JS匿名函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“为什么不使用JS匿名函数”吧!如果你不知道匿名函数是什么,这里有一...
    99+
    2022-10-19
  • JavaScript中匿名函数与变量有什么用
    这篇文章将为大家详细讲解有关JavaScript中匿名函数与变量有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。匿名函数:没有实际名字的函数。匿名函数的作用:1、通...
    99+
    2022-10-19
  • python中匿名函数使用什么保留字
    python中的匿名函数一般是使用lambda保留字,python中的保留字有以下几种:lambda:匿名函数;raise:触发异常后,后面的代码不会再执行;del:删除变量;in:迭代器;try,except:尝试一个可能抛出异常的程序块...
    99+
    2022-10-14
  • JavaScript中匿名函数写法是怎么样的
    小编给大家分享一下JavaScript中匿名函数写法是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!匿名函数写法// 函数的定义var ...
    99+
    2023-06-03
  • 在PHP中怎么为匿名函数指定this
    这篇文章将为大家详细讲解有关在PHP中怎么为匿名函数指定this,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。关于闭包匿名函数,在JS中有个很典型的问题就是要给它绑定一个 this 作用域。其实这个问题在...
    99+
    2023-06-14
  • java匿名内部类的作用是什么
    Java匿名内部类的作用是在定义类的同时实现接口或继承类,并且只使用一次。它可以简化代码,减少类的定义过程,使代码更加简洁和易读。匿...
    99+
    2023-08-09
    java
  • go语言的匿名函数定义方法是什么
    go语言的匿名函数定义方法是“func(参数列表)(返回参数列表){函数体}”,其实匿名函数的定义就是没有名字的普通函数定义。匿名函数完全可以当作一个类型,可以直接赋值,可以赋值给变量,可以当作实参或者返回值进行使用,当然也可以直接进行调用...
    99+
    2023-05-14
    匿名函数 go语言 Golang
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作