PHP:检查是否存在并在一行中声明函数

时间:2017-02-17 23:19:16

标签: php function

有没有办法检查某个函数是否已存在,如果不存在,则在不使用if的情况下将其声明为同一行?

我知道可以做

if (!function_exists('func')) function func() {}

但出于学术原因,我很好奇是否有不同的方法可以做到这一点。

可能是一些东西
function_exists('func') or function func() {}

(function_exists('func') ? '' : function func() {})

但实际上有效吗?

您似乎可以使用第一种语法声明匿名函数:

function_exists('func') or function() {}

但这并不好,因为该功能没有名称......

还可以将函数分配给变量

function_exists('func') or $func = function() {};

但该功能不在全球范围内。

2 个答案:

答案 0 :(得分:2)

我能想到的另一种方法是在包含中声明func()

function_exists('func') or include('func.php');

当然,如果它在一个包含中,你可以通过这样做更简单地做到这一点

include_once('func.php');

答案 1 :(得分:1)

考虑到所有PHP函数都是全局声明的,它让我无法理解为什么你必须检查一个函数是否已经存在(或者为什么必须在不使用if语句的情况下进行检查)。

当然,除非您正在构建Web应用程序,否则您在当前页面中未包含的其他php文件中声明它。

但是有一个php function that checks if a function exists,但根据您的逻辑,您仍然需要使用某种if语句。

if (!function_exists('my_function')) {
    //delcare function...
}

要回答你的问题:不会。除了你所描述的,除了你所描述的之外,没有其他方法可以做到这一点,只是因为没有理由以任何其他方式去做。