php 匿名函数
来源:互联网 发布:linux怎么建站 编辑:程序博客网 时间:2024/05/22 08:16
匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。
匿名函数是在php5.3之后才引入的概念,到现在php7.0为止通过 Closure 类来实现。一、匿名函数
下面我们看下匿名函数定义方式(和JS相似)
$anonymousFunction = function(){ ...};
例如:我们通过匿名函数来输出 ‘This is anonymous function’
$anonymousFunction = function($a){ echo $a;};$anonymousFunction('This is anonymous function');
在工作中往往我们也会用到,如 preg_replace_callback
preg_replace_callback('/[a-z\W]+/', function ($match) { print_r($match);}, 'hello world 123');
二、闭包
如果我们将匿名函数放到普通方法中,这样就形成了一个简单的闭包
function func () { $anonymousFunction = function(){ echo 'This is anonymous function'; }; $anonymousFunction();}func();
倘若我们需要在匿名函数中调用普通方法的局部变量 如
function func () { $data = 'This is anonymous function'; $anonymousFunction = function(){ echo $data; }; $anonymousFunction();}func();
结果是返回一个notice错误
Notice: Undefined variable: data in /private/var/www/test/index.php on line 28
那我们需要在匿名函数中调用局部变量,应该怎么做呢?
二.1 作为参数传递
function func () { $data = 'This is anonymous function'; $anonymousFunction = function($data){ echo $data; }; $anonymousFunction($data);}func();
二.2 使用关键字 use
<注:use关键字除了在命名空间中 引入文件并为文件起别名以外的第二个用途>
function func () { $data = 'This is anonymous function'; $anonymousFunction = function() use ($data){ echo $data; }; $anonymousFunction();}func();
倘若我们需要用闭包改变引入变量值,那我们就需要用到&(取地址符了) 如
function func () { $data = 'This is anonymous function'; $anonymousFunction = function(&$data) { $data = 'Change'; }; $anonymousFunction($data); echo $data;}func();或者
function func () { $data = 'This is anonymous function'; $anonymousFunction = function() use (&$data){ $data = 'Change'; }; $anonymousFunction(); echo $data;}func();另外,我们还可以将匿名函数作为参数进行传递
$anonymousFunction = function($mess){ return $mess;};function ff ($para, $mess) { echo $para($mess);}ff($anonymousFunction, 'This is anonymous function');
以上为个人理解,倘若有不对的地方感谢告知。
阅读全文
1 0
- 61. PHP 匿名函数
- PHP匿名函数
- PHP的匿名函数
- php匿名函数
- PHP closure 匿名函数
- php 匿名函数
- php匿名函数
- PHP匿名函数
- php 匿名函数
- 【PHP】匿名函数
- PHP之匿名函数
- php 匿名函数
- php匿名函数
- php匿名函数的用法
- php手册之匿名函数
- PHP匿名函数的细节
- PHP匿名函数的写法
- PHP Closure创建匿名函数
- mysql ERROR 1045 (28000): Access denied for user解决方法
- final与static final的区别
- mybatis中foreach标签详解
- spring+hibernate应用层读写分离
- Oracle 索引的建立、修改、删除、查询
- php 匿名函数
- MyBatis和Spring进行整合
- 创建一个不能被继承的类和只能在堆上(或栈上)创建对象
- 一张图看懂微信小程序发展
- Android studio加快编译速度
- WebService的两种方式SOAP和REST比较
- CFgym:Good morning!(dfs)
- python调用chrome ie等浏览器
- 云服务器中安装wordpress,却不能使用公网IP进行访问