当前位置:首页 > php > 正文内容

php中function_exists的一个坑

phpmianshi7个月前 (02-22)php468

背景

php有一个检查函数是否存在的函数function_exists,有时我们需要用到它,防止函数重复定义


示例

先看一段代码,代码可以正常执行

test();
function test()
{
   return true;
}

再看下面这段代码

test();
if (!function_exists('test')) {
   function test()
   {
       return true;
   }
}

报错:PHP Fatal error:  Call to undefined function test() in xxx

把调用放到下面再看,又可以正常执行

if (!function_exists('test')) {
   function test()
   {
       return true;
   }
}
test();


总结

当用到function_exists的时候,其实是执行一段代码,并不是定义一个函数,所以如果提前调用的话,下面的function_exists还没执行,也就不会定义里面的函数了,导致报错,所以我们用到function_exists时,一定要注意放到调用之前

版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

PHP中如何实现进程间通讯

PHP中如何实现进程间通讯

进程间通讯机制——IPC(Inter-Process-Communication)。为了使得php5可以使用共享内存和信号量,必须在编译php5程序时激活shmop和sysvsem这两个扩展模块。  ...

a标签跨域下载文件,解决download失效问题

背景a标签中download属性可以更改下载文件的文件名。但是如果是跨域的话,download属性就会失效。解决方案一<a onclick="downloadFile(...

lumen项目集成laravelS后sentry无法上报的问题

背景公司项目严重依赖lumen系列,代码众多,重构困难,虽然访问量变大,性能问题越来越严重,急需要提升性能,于是找到了这个项目laravelS github : https://github.com/...

PHP数组实际占用内存大小的分析

1.数组正常的赋值是不会发生内存改变的,但是当赋值的新数组发生改动的时候,php就会新开辟内存给新的数组,这里会造成无谓的内存消耗。最好是不要直接这样赋值,如果非赋值不可的话,记得加上‘&’符...

PHP中max_execution_time设置不生效

问题描述:max_execution_time设置了1秒,但是发现超过3秒的脚本还是跑。于是深入研究下max_execution_time不生效的原因。官网描述:https://www.php.net...

记一次tp3.2.3因fetch导致的漏洞处理过程

记一次tp3.2.3因fetch导致的漏洞处理过程

问题描述:最近发现百度收录大幅度下降,并出现大量5xx错误,有些收录页面直接跳转到其他网站,如下图:问题追查1.根据以往经验首先怀疑网站被植入或者挂马      &nbs...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。