0

在其他人编写的项目中工作时,有一个函数可以检索一些数据,它的返回是带有数据的数组。

function getSomedata()
{
     //Get some data
     return Array();
}

在代码上,这个函数在很多地方都被测试为

if(getSomedata())
  getSomedata();

如果不编辑每段代码,如果从 IF 语句调用该函数并返回布尔值而不是带数据的数组,我能否从php获得通知。

4

2 回答 2

3

从理论上讲,您可以使用回溯来确定哪些代码调用了一段代码,并阅读和自省代码以确定函数是否在if语句中被调用。但我什至不打算详细说明如何做到这一点,因为这太疯狂了。

if (function()) function()是一种反模式,坏掉的代码,坏的,坏的,坏的。你需要纠正这种误用,而不是更加疯狂地与之抗争。如果在很多地方都使用了它,那就硬着头皮修复一次,而不必永远处理它。

于 2012-05-28T08:14:48.400 回答
-1

我认为您能做的最好的事情就是使用 $GLOBALS 检查数组是否已设置:

function getSomedata()
{
    if(!empty($GLOBALS['Arr']))
        return $Arr;

    //Get some data

    return $Arr;

}

类似的东西......如果在脚本执行期间数据没有改变,它会为你工作。但我建议你修复你的代码。

于 2012-05-28T08:11:00.917 回答