如何确定是否从IF检查功能

时间:2012-05-28 08:05:10

标签: php optimization reflection

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

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

在代码中,此功能在许多地方进行了测试

if(getSomedata())
  getSomedata();

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:-1)

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

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

    //Get some data

    return $Arr;

}

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