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

php中function_exists的一个坑

phpmianshi7个月前 (02-22)php482

背景

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中 array_walk array_map array_filter区别

array_walk:array_walk — 使用用户自定义函数对数组中的每个元素做回调处理1. 用户自定义的函数处理每一个元素2. 直接修改原数组,不会创建新的数组3. 可以传递额外的参数更多信息...

php中global与$GLOBAL由引用产生的区别

很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然。根据官方的解释是$GLOBALS['var'] 是外部的全局变量$var本身。global $var 是外部...

tp5.0.x 5.1.x 最新getshell漏洞

概况近日thinkphp团队发布了版本更新:https://blog.thinkphp.cn/869075 ,其中修复了一处getshell漏洞。影响范围5.1.x < 5.1.315.0.x&...

php中Memcache::get(): Server...failed with: Failed reading line from stream

背景最近sentry报告PHP的memcache客户端php-memcache经常出 现断连接的问题:PHP Notice:  Memcache::get(): Server ………. (t...

php中opcache注意事项以及调优

背景从 PHP5.5 开始,Opcache 扩展是核心的一部分,增加了对 PHP 脚本的字节码缓存的支持。对于动态语言(例如 PHP ),字节码缓存可以显著的提高性能,因为它可以确保脚本仅被编译一次。...

Fiddler抓包设置及常见问题

Fiddler抓包设置及常见问题

Fiddler简介官网:https://www.telerik.com/fiddlerFiddler是比较好用的web代理调试工具之一,它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够...

发表评论

访客

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