这篇文章将为大家详细讲解有关如何在php闭包中使用使用声明变量的作用域,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
具体如下:
& lt; php ? 我function getClosure(美元) { ,,,小姐:美元=,我公司美元# 39;& # 39;.date (& # 39; H:我:& # 39;); ,,,return function (param美元),use ($ i), { ,,,,,,,echo “——安康;参数:,param 美元;- - - - - - \ n"; ,,,,,,,echo “——神;我:,小姐:美元——\ n"; ,,,}; } $ c =, getClosure (123); 小姐:美元=,456; $ c(& # 39;测试# 39;); 睡眠(3); $ c2 =, getClosure (123); 美元c2(& # 39;测试# 39;); $ c(& # 39;测试# 39;);/* 输出: ——安康;参数:test - - - - - - ——神;我:123 - 21:36:52 - - - - - - ——安康;参数:test - - - - - - ——神;我:123 - 21:36:55 - - - - - - ——安康;参数:test - - - - - - ——神;我:123 - 21:36:52 - - - - - - */
如上,闭包中使用<代码> 代码>使用声明的变量来自于生成闭包实例时所在作用域内的同名变量,而不是来自于运行闭包时所在作用域内的同名变量。
而闭包的函数参数则是和正常的函数参数一样来自于运行时所在作用域内的同名变量。
以下为操作码:
找到入口点
分支分析位置:0
跳。位置1=2
文件名:,,,,,,/tmp/testclosure。php
函数名:(空)
行动:,20
编制var:,! 0=$ c, 1=$我! 2=$ c2
line ,,,# * E I O op ,,,,,,,,,,,,,,,,,,,,,,,,,fetch ,,,,,,,,ext return 操作数
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
,,2,,,,0,E祝辞,,NOP
,11,,,,1,,,,,,,SEND_VAL ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,123年
,,,,,,,,2,,,,,,,DO_FCALL ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,0美元,,,,,& # 39;getclosure& # 39;
,,,,,,,,3,,,,,,,ASSIGN ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,! 0,0
,12,,,,4,,,,,,,ASSIGN ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,! 456
,13,,,,5,,,,,,,INIT_FCALL_BY_NAME ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,! 0
,,,,,,,,6,,,,,,,SEND_VAL ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,& # 39;测试# 39;
,,,,,,,,7,,,,,,,DO_FCALL_BY_NAME ,,,,,,,,,,,,,,,,,,,,,,,,,,,,1
,14日,,,,8日,,,,,,,SEND_VAL ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3
,,,,,,,,9日,,,,,,,null如何在php闭包中使用使用声明变量的作用域