PHP:查询函数范围内定义的所有变量

时间:2013-08-26 11:48:19

标签: php

这只是出于好奇,但我想知道是否有办法查询函数范围内定义的所有变量(仅在此范围内,并在该函数内)并将它们放在关联数组中。类似于扩展get_defined_vars功能的东西。

原因是能够在程序中的任何一点保存执行的“状态”,例如调试,记录,处理异常,甚至将函数的整个范围传递给另一个。如果我没弄错的话,我认为get_object_vars允许用对象做这个。

2 个答案:

答案 0 :(得分:1)

来自PHP.net的评论

// The very top of your php script
$vars = get_defined_vars();

// Now do your stuff
$foo = 'foo';
$bar = 'bar';

// Get all the variables defined in current scope
$vars = array_diff(get_defined_vars(),$vars);

echo '<pre>';
print_r($vars);
echo '</pre>';

答案 1 :(得分:0)

PHP确实没有范围,后来又添加了这些,这就是为什么你需要$ this和global来访问全局变量的原因。对象基本上是作为数组实现的,因为它们来得晚,这就是为什么两个对象上的相等测试按成员工作的原因。

你当然可以试试var_dump。

忽略var_dump位,你发现get_defined_varsget_object_vars它们的距离就越近了,我很抱歉地说。

另一个困难是告诉你函数中的变量是什么变量,记住PHP是一种动态语言,如果我们有:

$x = "hello";
$$x = "world"

我们现在有一个名为$hello的变量,其值为"world",如果$ x变量来自某些复杂的非确定性代码,则无法在不运行的情况下判断它。因此,您只能检查当前变量,当您进入变量时,并且考虑到范围的实现方式,get_defined_vars就会让您感到遗憾。