PHP闭包获取外部变量和global关键字声明变量的区别
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"PHP闭包获取外部变量和global关键字声明变量的区别",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP闭包获取外部变量和gl
千家信息网最后更新 2025年11月07日PHP闭包获取外部变量和global关键字声明变量的区别
这篇文章主要讲解了"PHP闭包获取外部变量和global关键字声明变量的区别",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP闭包获取外部变量和global关键字声明变量的区别"吧!
闭包
闭包是一个常见的概念,我们通常可以将其与回调函数配合使用,可以使代码更加简洁易读。
闭包可以 通过拷贝的方式 让函数使用父作用域中的变量。如:
$global = 'hello';$bbb = function()use($global){ echo $global."\n";};$bbb();//输出 'hello'global关键字声明变量
通过global声明变量同样可以使函数体调用到函数外部的变量,不过global与use不同,globle关键字会使创建 一个与外部变量同名的引用 ,并且在函数内对变量作出修改同样会作用域外部变量。
$global = 'hello';$fun = function(){ global $global; $global =' world'; echo $global."\n";};$fun();// 输出 'world'这里只是创建一个同名引用而已,并不会改变原本外部变量$global的作用域,也就是说在另外一个函数中调用该依旧需要声明或者使用闭包
$global = 'hello';$fun = function(){ global $global; $global =' world'; echo 'a:'.$global."\n";};$ccc = function(){ echo 'b:'.$global;};$fun()$ccc()/*输出
a: worldNotice: Undefined variable: global in xxxxxxx on line xx*/
再稍微改一下代码,这样更容易对比闭包和global关键字声明变量这两种访问外部变量方式的区别。
这里b和d两个输出可以看出来,global改变了外部变量的值,而闭包方式并没有。
输出:
a: worldb: worldc:chinad: world最后再贴一个官方文档中比较经典的使用匿名函数,闭包与回调函数配合的例子:
class Cart{ const PRICE_BUTTER = 1.00; const PRICE_MILK = 3.00; const PRICE_EGGS = 6.95; protected $products = array(); public function add($product, $quantity) { $this->products[$product] = $quantity; } public function getQuantity($product) { return isset($this->products[$product]) ? $this->products[$product] : FALSE; } public function getTotal($tax) { $total = 0.00; $callback = function ($quantity, $product) use ($tax, &$total) { $pricePerItem = constant(__CLASS__ . "::PRICE_" . strtoupper($product)); $total += ($pricePerItem * $quantity) * ($tax + 1.0); }; array_walk($this->products, $callback); return round($total, 2); }}$my_cart = new Cart;$my_cart->add('butter', 1);$my_cart->add('milk', 3);$my_cart->add('eggs', 6);print $my_cart->getTotal(0.05) . "\n";感谢各位的阅读,以上就是"PHP闭包获取外部变量和global关键字声明变量的区别"的内容了,经过本文的学习后,相信大家对PHP闭包获取外部变量和global关键字声明变量的区别这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
变量
闭包
函数
关键
关键字
输出
作用
方式
学习
代码
内容
可以使
不同
简洁
两个
也就是
也就是说
例子
原本
只是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
供应商数据库是什么
网络安全工作原则是什么意思
我的世界好玩服务器编码中国版
数据库工作原理讲解视频
深圳光谱软件开发有限公司好吗
谷歌服务器无法访问网页
我的世界服务器漏洞
数据库事务并发有什么影响
服务器耗电
简单的数据库软件模板
网络安全与防范公需课上海
数据库中int占几个字节
服务器cpu2603参数
国家网络安全的目标包括
碎片化存储服务器
广东省网络安全宣传直播
山西二五六互联网科技公司
打开并使用数据库的命令是
红色主题数据库设计
江西正规软件开发供应商
ip网络技术中兴培训
网络安全岗位及人员工作职责制度
本科毕业论文 改数据库
奉贤区品牌软件开发定制价格
数据库事务并发有什么影响
镇政府网络安全实施活动方案
静安区管理网络技术供应
网络技术发展对银行的影响
计算机网络技术与应用张广福答案
服务器ip和网关可以一样吗