PHP 匿名函数与注意事项详细介绍


Posted in PHP onNovember 26, 2016

PHP 匿名函数与注意事项

PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束
PHP5.2:JSON 支持
PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar
PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改
PHP5.5:yield, list() 用于 foreach, 细节修改
PHP5.6: 常量增强,可变函数参数,命名空间增强

现在基本上都使用PHP5.3以后的版本,但是感觉普遍一个现象就是很多新特性,过了这么长时间,还没有完全普及,在项目中很少用到。 

看看PHP匿名函数:

'test' => function(){
    return 'test'
},

PHP匿名函数的定义很简单,就是给一个变量赋值,只不过这个值是个function。

以上是使用Yii框架配置components文件,加了一个test的配置。

什么是PHP匿名函数?

看官方解释:

匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。

匿名函数示例

<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
  return strtoupper($match[1]);
}, 'hello-world');
// 输出 helloWorld
?>

 闭包函数也可以作为变量的值来使用。PHP 会自动把此种表达式转换成内置类 Closure 的对象实例。把一个 closure 对象赋值给一个变量的方式与普通变量赋值的语法是一样的,最后也要加上分号:

匿名函数变量赋值示例

<?php
$greet = function($name)
{
  printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
?>

闭包可以从父作用域中继承变量。 任何此类变量都应该用 use 语言结构传递进去。

从父作用域继承变量

<?php
$message = 'hello'
// 没有 "use"
$example = function () {
  var_dump($message);
};
echo $example();
// 继承 $message
$example = function () use($message) {
  var_dump($message);
};
echo $example();
// Inherited variable's value is from when the function
// is defined, not when called
$message = 'world'echo $example();
// Reset message
$message = 'hello'
// Inherit by-reference
$example = function () use(&$message) {
  var_dump($message);
};
echo $example();
// The changed value in the parent scope
// is reflected inside the function call
$message = 'world'echo $example();
// Closures can also accept regular arguments
$example = function ($arg) use($message) {
  var_dump($arg . ' ' . $message);
};
$example("hello");
?>

php中的匿名函数的注意事项

在php5.3以后,php加入匿名函数的使用,今天在使用匿名的时候出现错误,不能想php函数那样声明和使用,详细看代码

$callback=function(){ 
 return "aa"; 
}; 
echo $callback();

打印出来是aa;

看下面的例子:

echo $callback(); 
$callback=function(){ 
 return "aa"; 
};

这时报错了!$callback为未声明,但是使用php自己声明的函数都不会报错的!

function callback(){ 
 return "aa"; 
} 
echo callback(); //aa 
 
echo callback(); //aa 
function callback(){ 
 return "aa"; 
}

这两个都打印出来aa;

 在使用匿名函数的时候,匿名函数当做变量,须提前声明,js中也是这样的!!!!!

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
PHP新手入门学习方法
May 08 PHP
深入php list()函数的详解
Jun 05 PHP
php 下载保存文件保存到本地的两种实现方法
Aug 12 PHP
php过滤XSS攻击的函数
Nov 12 PHP
Win7 64位系统下PHP连接Oracle数据库
Aug 20 PHP
php获取从html表单传递数组的方法
Mar 20 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
PHP单态模式简单用法示例
Nov 16 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
Thinkphp整合阿里云OSS图片上传实例代码
Apr 28 PHP
laravel框架创建授权策略实例分析
Nov 22 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 #PHP
Zend Framework框架实现类似Google搜索分页效果
Nov 25 #PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
Nov 25 #PHP
Zend Framework上传文件重命名的实现方法
Nov 25 #PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 #PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 #PHP
php对接java现实加签验签的实例
Nov 25 #PHP
You might like
php session 检测和注销
2009/03/16 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
python re模块的高级用法详解
2018/06/06 Python
python实现飞机大战游戏
2020/10/26 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
Python ORM编程基础示例
2020/02/02 Python
在TensorFlow中屏蔽warning的方式
2020/02/04 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
校园招聘策划书
2014/01/09 职场文书
酒店节能降耗方案
2014/05/08 职场文书
儿童生日会策划方案
2014/05/15 职场文书
反四风对照检查材料
2014/09/22 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
旅游项目合作意向书
2015/05/08 职场文书
运动员入场词
2015/07/18 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
php引用传递
2021/04/01 PHP
golang switch语句的灵活写法介绍
2021/05/06 Golang