-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:46564
- shell命令
-
- 文章:(42)篇
- 阅读:154236
- Git教程
-
- 文章:(36)篇
- 阅读:234850
- leetCode刷题
-
- 文章:(76)篇
- 阅读:131789
-
PHP函数之get_defined_vars2017-11-28 21:08 阅读(4708) 评论(0)
一、概念
php官方给get_defined_vars解释是返回由所有已定义变量所组成的数组。语法如下:
array get_defined_vars ( void )
其实,我认为更加确切地来说,该函数是返回该函数所在作用域中所有已定义变量所组成的数组。
通过下面的一个案例,可以很明确的说明这一点。
function trace($data, $exit = false){ echo '<pre>'; print_r($data); echo '</pre>'; $exit && die; } class A{ private $name ='dq'; private $age = 18; public function f1($aa = 5, $bb= 6){ trace(get_defined_vars()); } } $a = new A(); $a->f1(); trace(get_defined_vars());
输出如下:
因为第一个get_defined_vars是在函数里面调用,自然只会返回函数里面已经定义的变量;第二个get_defined_vars是在全局作用域中定义,自然返回全局作用域中的变量。
二、应用场景分析
1.获取函数里面所有变量
在实际项目中,如果我们需要获取函数里面所有变量,get_defined_vars是个不错的选择,比如:
class Student{ public function add($name, $age, $email = '', $tel = ''){ //对数据进行一些验证,如下: if ($age < 0 || $age > 120) { $age = 0; //代表未知 } //新增加字段,如下 $create_ts = time(); $data = get_defined_vars(); trace($data); //然后就可以拿着$data,进行数据库插入操作 } } $s = new Student(); $s->add("hello", -5);
是不是感觉效果还不错哦。为了获取函数传递的参数,很多人习惯使用func_num_args()、 func_get_arg()、func_get_args() 这些数数呢?首先来看看这些函数的意思吧
func_num_args() //函数实际传递的参数个数 func_get_arg(int $arg_num ) //获取传递的第arg_num个参数 func_get_args() //获取函数实际传递的所有参数组成的数组,但是数组的key值不是变量名称,而是从数字0开始。
比如下面代码:
class Student{ public function add($name, $age, $email = '', $tel = ''){ $data = func_get_args(); trace($data, true); } } $s = new Student(); $s->add("hello", -5);
运行效果如下:
二、备注
程序中使用的trace函数定义如下:
function trace($data, $exit = false){ echo '<pre>'; print_r($data); echo '</pre>'; $exit && die; }