php值callback类型和匿名函数(闭包)

callback、callable类型

自PHP5.4起可以使用callable类型制定回调类型callback。

本文档基于同样理由使用callback类型信息。

一些函数如call_user_func()或者usort()可以接受用户自定义的回调函数作为参数,回调函数不不止可以是简单的函数,

还可以是对象的方法,包括静态类方法。

传递???????????

PHP是将函数已string形式传递的。keyi9使用任何内置或者用户自定义函数,但除了语言结构例如:array、echo、empty、eval、exit、isset、list、print、unset。

一个已实例化的object的方法被作为array传递。小标0包含该object,下标1包含方法名。

在同一个类里面可以访问projected和private方法。

静态类方法也可不经实例化该类的对象而传递。只要在下标0中包含类名而不是对象。自PHP5.2.3起,也可以传递"类型::方法名"

除了普通的用户自定义函数外,也可以传递匿名函数给回调函数。

call_user_func();

匿名函数

匿名函数(Anonymous functions),也叫闭包函数(closures),允许临时创建一个没有指定名称的函数。

最经常用作回调函数(callback)参数的值。当然,也有其他应用的情况。

匿名函数示例

echo preg_replace_callback(‘~-([a-z])~‘, function ($match) {

return strtoupper($match[1]);

}, ‘hello-world‘);

// 输出 helloWorld

闭包函数也可以作为变量的值来来使用。PHP会自动把此种表达式转化成内置类Closure的对象实例,。把一个closure

对象赋值给一个变量的方式与普通变量赋值的语法是一样的,最好也要加上分号;

匿名函数变量赋值示例

$greet = function($name)

{

printf("Hello %s\r\n", $name);

};

$greet(‘World‘);

$greet(‘PHP‘);

call_user_func($greet);

闭包可以从父作用域中继承变量。

任何此类变量都应该用use 语言结构传递进去。PHP7,1起,不能传入此类变量。

superglobals。$this或者和参数重名。

这些变量都必须在函数或者类的头部声明,从父作用域中继承变量与使用全局变量是不同的。

全局变量存在于一个全局的范围,

无论当前在执行的是那个函数,而闭包的父作用域是定义该闭包的函数(不一定是调用它的函数)。

示例如下:

原文地址:https://www.cnblogs.com/2018-05-9-ygk/p/9372597.html

时间: 2024-10-31 15:51:12

php值callback类型和匿名函数(闭包)的相关文章

速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

[源码下载] 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函数返回值 可变函数 匿名函数 闭包函数 回调函数 示例1.函数的相关知识点 1(基础)function/function1.php <?php /** * 函数的相关知识点 1(基础) */ // 可以在相关的 function 声明语句之前调用该函数 f1(); function f1() { echo "f1"; echo "<br />"; } // 这里调用

js匿名函数闭包

函数声明: function functionName(arg0,arg1){ //函数体 } 函数表达式: var functionName = function(arg0,arg1){ //函数体 } 函数声明和函数表达式之间的主要区别是前者会在代码执行前被加载到作用域中,而后者是在代码执行到那一行的时候才会有定义.另一个区别是函数声明会给函数指定一个名字,而函数表达式则创建一个匿名函数,然后将这个函数赋给一个变量 1 递归 递归函数是在一个函数通过名字调用自身的情况下构成的,例如: fun

PHP匿名函数(闭包)

匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数.最经常用作回调函数(callback)参数的值.当然,也有其它应用的情况. 结合array_walk和匿名函数来实现一个结算功能 array_walk() 函数对数组中的每个元素应用回调函数.如果成功则返回 TRUE,否则返回 FALSE. 1 <?php 2 class anyMouseTest{ 3 //定义商品类型.价格 4 const IPHONE6_PRICE =

PHP匿名函数(闭包函数)详解_php技巧 - PHP

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 在PHP中匿名函数(Anonymous functions),也叫闭包函数( closures ),允许临时创建一个没有指定名称的函数.经常用作回调函数(callback)的参数. 当然,也有其他应用的情况. 注:php闭包是PHP5.3版本之后才有的 什么是闭包?闭包是可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量).“闭包

js:匿名函数/闭包前奏

js里面”万物皆对象“,函数同理 三种定义方式 a.传统的如同C语言一样的定义方式:function abc(){code} b.少见的定义方式:var abc = new Function('参数','代码');  //由此可见我们的function是构造函数Function的对象实例,即函数也是对象 c.匿名函数定义:var abc = function(){...} //写一个匿名函数,并让一个变量称为它的引用 对于匿名函数有很多奇技淫巧: 1.若是我们平时用a,b方法定义函数,实际调用的

PHP函数(六)-匿名函数(闭包函数)

匿名函数能够临时创建一个没有名称的函数,常用作回调函数参数的值 <?php $test = function($a){ echo "Hello,".$a; }; $test("world"); ?> 一定要在匿名函数的结尾处加上分号 执行结果 回调函数将匿名函数做参数 <?php function callback($a){ $a(); } callback(function(){ //声明一个匿名函数并传给callback()函数 echo &q

javascript匿名函数 闭包

匿名函数 (function(){                console.info("111111111");            })(); var my = (function(){                return "11111111";            })(); 函数里放匿名函数叫闭包 function my(){                return function(){                    retur

php : 匿名函数(闭包) [一]

摘自: http://www.cnblogs.com/starlion/p/3894578.html 一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函数的参数值.(http://php.net/manual/zh/functions.anonymous.php) 匿名函数的定义: $closureFunc = function(){ .... }

PHP匿名函数及闭包

匿名函数在编程语言中出现的比较早,最早出现在Lisp语言中,随后很多的编程语言都开始有这个功能了, 目前使用比较广泛的Javascript以及C#,PHP直到5.3才开始真正支持匿名函数,C++的新标准C++0x也开始支持了. 匿名函数是一类不需要指定标示符,而又可以被调用的函数或子例程,匿名函数可以方便的作为参数传递给其他函数,最常见应用是作为回调函数. 闭包(Closure) 说 到匿名函数,就不得不提到闭包了,闭包是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数,