有没有办法检查函数在调用时是否需要返回值

时间:2012-06-10 21:57:25

标签: php

我想写一个条件,我想知道我的函数是否需要返回值,或者它可以作为一个过程执行。基本上它应该看起来像:

foo($x) {
    $x++;
    echo $x;
    if(is_return_needed()) {
        return $x;
    }
}

其中is_return_needed()是需要返回值的条件。

它应该如何运作:

echo foo(50); // should print AND return 51
bar(foo(50)); // should print AND return 51 to bar() function
foo(50); // should only print the value, because the returned value will not be used

请不要告诉我没有理由这样做。我知道我可以向函数发送一个额外的布尔参数作为条件,但是有更好的方法来实现这个吗?

1 个答案:

答案 0 :(得分:1)

返回一个对象(或一个大字符串),PHP将制作该对象/字符串的副本。这意味着单独返回,不会减慢您的应用程序。我发现article很好地解释了它。

如果函数可以完全避免构建这个大对象,它将变得更快。如果您在外部更改函数的结果,或者在返回之前更改它,它将变慢(然后必须进行复制)。总是添加一个小部分构建一个长字符串是非常昂贵的,因为每次它必须分配一个新的大块内存。

那就是说,我们必须看到你的代码,才能理解你所描述的减速。有时仅返回结果是一个非常糟糕的建议,每个使用您的代码的开发人员都很难理解这种行为。如果您经常使用此应用程序,您的应用程序迟早会变得不稳定。实际上我发现return mixed typed values甚至是危险的,因为PHP经常会这样做。