如何确定是否从 IF 检查函数


How to determine if function is Checked from IF

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

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

在代码上,这个函数在许多地方都进行了测试,作为

if(getSomedata())
  getSomedata();

在不编辑每一段代码的情况下,如果从 IF 语句调用该函数并返回布尔值而不是带数据的数组,我可以从 php 收到通知吗?

理论上,您可以使用回溯来确定哪个代码调用了一段代码,并读取和内省代码以确定该函数是否在 if 语句中调用。但我甚至不打算详细介绍如何做到这一点,因为这太疯狂了。

if (function()) function()是反模式,破损代码,坏,坏,坏。你需要纠正这种滥用,而不是更疯狂地对抗它。如果在很多地方使用它,请咬紧牙关并修复一次,而不必永远处理它。

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

function getSomedata()
{
    if(!empty($GLOBALS['Arr']))
        return $Arr;
    //Get some data
    return $Arr;
}

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