有没有办法检查某个函数是否已存在,如果不存在,则在不使用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() {};
但该功能不在全球范围内。
答案 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...
}
要回答你的问题:不会。除了你所描述的,除了你所描述的之外,没有其他方法可以做到这一点,只是因为没有理由以任何其他方式去做。