今天被一个ThinkPHP的一个鬼畜的点玩死,差点怀疑自己是不是有编程能力了。
事情是这样的:
条件1:在我没有开启ThinkPHP的调试模式:define('APP_DEBUG',true)。
条件2:我在应用的Common文件下的function.php中新写了一个函数
条件3:我在控制器中调用这个新写的函数,然后页面显示了这么一个情况:
然后我整个人都懵了,我写的函数是:return 'hello world';这样的情况的,绝对不存在函数编写错误的情况,那个时候查到死,最后发现,函数编写没有问题,问题在于think不去调用这个新建的函数,FXXX。
后来尝试了解决办法就是开一下debug模式,再调用一次,成功后再把debug模式关掉就行了,之后就可以正常调用了。
这里是后来一位大哥告诉我的实际原理:
其实thinkphp在关闭debug调试模式之后,就会把Common下的Common中的function.php和Conf下的config.php内容都保存在了Runtime下的一个common~runtime.php文件中,所以你在关闭function.php中新建内容,其实thinkphp没有调用function.php而是common~runtime.php文件,所以死都调不到。
所以在开发期间最好开启debug模式,有问题就先删Runtime文件夹下的内容。