关于php匿名函数中的use
来源:互联网 发布:工业进销存软件免费版 编辑:程序博客网 时间:2024/06/06 00:25
http://blog.csdn.net/qmhball/article/details/53668113
匿名函数中的use,其作用就是从父作用域继承变量。
下例是最常见的用法,如果不使用use,函数中将找不到变量$msg。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
关于继承变量的时机
继承变量的行为是在函数定义时产生还是在函数调用时产生?我们调整下上例中代码的顺序,将$msg置于函数定义之后。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
可见,继承变量的行为是在函数定义时产生的。上例中定义
关于use中使用引用传值
我们知道,在匿名函数的use中如果使用引用传值,那么匿名函数中对参数值的改变会同样影响外部相应变量。比如下面的例子:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
那么是不是任何情况下,想通过匿名函数改变外部变量值都一定要通过引用方式向use传值呢?看下面这个例子:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
可见,如果传递object类型的变量,即使不显示使用引用传递,匿名函数中变量值的改变同样会影响到外部相关变量。
但是,问题又来了。向use传递object变量时,使用引用与不使用引用到底有没有区别呢?还是来看例子
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
我们改为使用引用传递
- 1
- 2
- 3
- 4
- 5
- 6
可见使用引用传递时,即使变量滞后于函数定义,函数内部还是可以找到外部相应的变量,不会出现变量未定义的情况。两者还是有区别的。
关于class中匿名函数里的this及use
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
可见匿名函数里的this就是指当前对象,不需要使用use就可以直接找到。
还是上面的例子,如果一定要使用use会是什么效果呢?
将mkFunc改为
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
修改为
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
可见是否使用use,效果是一样的。
阅读全文
0 0
- 关于php匿名函数中的use
- 关于php匿名函数中的use
- PhP中的匿名函数与use
- php 匿名函数 实例1(use)
- PHP学习:匿名函数和use()
- PHP匿名函数、闭包、function use
- php中的匿名函数和闭包(closure)及use的作用
- php 匿名函数和use子句的使用
- PHP匿名函数和use子句用法实例
- 深入理解PHP中的匿名函数
- php中的array_map,array_walk以及匿名函数
- php中的匿名函数和闭包
- php中的匿名函数简单使用
- php中的匿名函数和闭包
- 61. PHP 匿名函数
- PHP匿名函数
- PHP的匿名函数
- php匿名函数
- Windows和Linux环境下搭建SVN服务器
- c++C1010错误
- Windows 多版本python情况下使用pip安装软件包
- Redis存储数据类型五:SortedSet
- Linux的安装及常用命令
- 关于php匿名函数中的use
- Centos7 编译安装redis-4.0.1及主从+哨兵模式
- 17个新手常见Python运行时错误
- POJ 4131 Charm Bracelet
- 物联网卡是如何应用在智能养老监控的
- mysql_相关收集
- 8.3分析下面函数能否实现其功能,并编写出正确的程序
- Linux学习笔记
- TortoiseSVN入门篇