快速掌握PHP检查语法错误技巧_PHP教程

php中文网
发布: 2016-07-15 13:34:15
原创
1589人浏览过

错误抑制符去掉错误信息,eval和echo一样并不是函数,不能使用变量函数的方法调用比如:

$func = ‘eval’

$func()这样的调用就是无效的。它会提示没有eval函数,如果你自己定义这么一个函数也是有问题的。因为eval是一个关键字。
eval调用和include差不多,如果被包含文件中没有明确return就返回null。如果直接eval我们需要检查的文件会造成被检查的文件内代码被执行,这可不是我们想要的,我们只需要检查一下这个文件的语法是否正确。 我们可以在要检查的文件之前添加return 语句,让代码提前跳出,那么后面的代码就不会执行了。好的,就这么干。代码如下:

<ol class="dp-xml"><li class="alt"><span class="tag"><</span> ?PHP  </li><li><span>if(!function_exists('</span>PHP<span>_check_syntax')) {  </span></li><li class="alt"><span>function </span>PHP<span>_check_syntax($file_name, <br />&$</span><span class="attribute">error_message</span><span> = </span><span class="attribute-value">null</span><span>) {  </span></li><li><span>$</span><span class="attribute">file_content</span><span> = </span><span class="attribute-value">file_get_contents</span><span>($file_name);  </span></li><li class="alt"><span>$</span><span class="attribute">check_code</span><span> = </span><span class="attribute-value">"return true; ?>"</span><span>;   </span></li><li><span>$</span><span class="attribute">file_content</span><span> = $check_code . <br />$file_content . "</span><span class="tag"><</span><span> ?</span>PHP<span> ";  </span></li><li class="alt"><span>if(!@eval($file_content)) {  </span></li><li><span>$</span><span class="attribute">error_message</span><span> = </span><span class="attribute-value">"file: "</span><span> . <br />realpath($file_name) . " have syntax error";  </span></li><li class="alt"><span>return false;  </span></li><li><span>}  </span></li><li class="alt"><span>return true;  </span></li><li><span>}  </span></li><li class="alt"><span>}  </span></li><li><span>if(!</span>PHP<span>_check_syntax("file.</span>PHP<span>", $msg)) {  </span></li><li class="alt"><span>echo $msg;  </span></li><li><span>}  </span></li><li class="alt"><span>else {  </span></li><li><span>echo "Woohoo, OK!";  </span></li><li class="alt"><span>}  </span></li><li><span class="tag"><</span><span> ?</span>PHP<span>  </span></li><li class="alt"><span>foreach:: </span><span class="attribute">a</span><span> =</span><span class="tag">></span><span> b  </span></li><li><span class="tag">?></span><span>  </span></li></ol>
登录后复制

因为Parse error 是没法被 set_error_handler处理函数处理的。这个异常没办法catch到。所以才使用了@来抑制错误。这带来的问题就是我们无法得到详细的错误信息。 不过目前我需要的功能也只是检查语法是否正确。不正确的话重新编译模板文件,就这么简单,至于语法错误,在显示网页的时候自然会看得到。

法语写作助手
法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31
查看详情 法语写作助手

PHP检查语法错误最好的办法就是这个被遗弃的PHP_check_syntax这个方法回到PHP中。下次再研究下他们是出于什么原因把这个函数去掉的。

立即学习PHP免费学习笔记(深入)”;


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446009.htmlTechArticle错误抑制符去掉错误信息,eval和echo一样并不是函数,不能使用变量函数的方法调用比如: $func = eval $func()这样的调用就是无效的。它会提...
相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号