如何知道变量的初始化或最后修改的位置

时间:2014-09-03 08:34:02

标签: php

PHP中是否有任何方法可以知道变量的初始化位置或第一次分配值或上次修改变量的位置?

我认为应该可以知道这一点,因为PHP在错误中提供了一些这样的提示。喜欢:Can not redeclare abc() (previously declared in /path/to/file.php)

修改 我需要这个因为:

function abc() {
   global $page; //this should be int.
   if($page == 2) { ... }
}

但是当这个功能运行时;我收到错误Can not convert object into int。这是因为我的代码$ page中的某些地方被任何对象覆盖。我需要找到它被修改的地方。或者我将不得不深入研究整个代码。

2 个答案:

答案 0 :(得分:0)

如果你想知道某个变量的定义,那么你运气不好;除了实际查看代码并找到它之外,没有办法找到它。

您的问题似乎是您允许变量进入函数(使用global)。因为变量是在函数外定义的,所以可以随时修改。如果你想知道变量包含什么,那么你应该把它作为参数传递:

$page = 2;
function abc($page) {
   if($page == 2) { ... }
}
$test = abc($page);

如果你想确保变量的值是一个数字,那么你可以通过简单地验证参数(或者global变量来找到它):

if (is_int($page) or ctype_digit($page)) {
    echo 'The $page variable is a number';
} else {
    echo 'The $page variable is NOT a number';
}

答案 1 :(得分:0)

您可以使用本机php函数get_class()找出分配给$ page变量的对象:

get_class($page);

您通常希望使用单元测试来调试它,您将测试变量$ page是否为数字。

如果您只是想在屏幕上调试,请尝试:

if(is_object($page)){
     die(get_class($page));
    }

或通过例外:

if(is_object($page)){
 throw new Exception('$page must be numeric object given of type : '.get_class($page));
}

这将帮助您找到为变量分配的对象,并指出正确的方向。

相关问题