PHP闭包获取外部变量和global关键字声明变量的区别
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要讲解了"PHP闭包获取外部变量和global关键字声明变量的区别",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"PHP闭包获取外部变量和gl
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
互联网加科技
苏州找大状互联网科技有限公司
互联网品科技
互联网科技金融
互联网科技革命
小马过河互联网科技
互联网女皇 腾讯科技
左右互联网络科技
丰台科技园 互联网公司
昊天互联网科技有限公司
华夏恒生互联网科技013171
互联网金融科技公司的优势
四川互联网展示科技馆设计
富国互联网金融科技混合基金
富国互联网科技002692
宁波跨境商互联网科技有限公司
银川新华互联网科技学校原画
悟空问答互联网科技
如何强化互联网金融科技
科技发展第三阶段互联网时代
互联网科技公司官网
天扬科技互联网广告
安控科技rtu产品工业互联网
西安小鹰速贷互联网科技有限公司
智帮互联网科技公司最近动向
互联网科技资金流入
互联网科技融合创新
恒生互联网科技趋势
伍佰万互联网科技是干嘛的
科技发展第三阶段互联网时代