栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PHP解析/语法错误;以及如何解决它们

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP解析/语法错误;以及如何解决它们

语法错误是什么?

PHP属于C风格和命令式编程语言。它具有严格的语法规则,遇到错位的符号或标识符时无法恢复。它无法猜测您的编码意图。

函数定义语法摘要

最重要的提示

您可以始终采取一些基本的预防措施:

  • 使用适当的代码缩进,或采用任何高级编码样式。可读性可防止出现不正常情况。

  • 将IDE或编辑器用于PHP并突出显示语法。这也有助于括号/括号平衡。

预期:分号

  • 阅读手册中的语言参考和示例。两次,变得有些熟练。

如何解释解析器错误

典型的语法错误消息为:

解析错误:语法错误,意想不到的T_STRING,期待“

;
”在file.php上线 217

其中列出了语法错误的可能位置。请参阅提到的文件名和行号。

诸如此类的绰号

T_STRING
解释了解析器/令牌最终无法处理的符号。但是,这不一定是语法错误的原因。

同样重要的是要研究以前的代码行。通常,语法错误只是更早发生的不幸。错误行号正是解析器最终放弃处理所有错误的地方。

解决语法错误

有许多方法可以缩小和修复语法问题。

  • 打开提到的源文件。看上面提到的代码行。

  • 对于失控的字符串和放错位置的运算符,通常会在这里找到罪魁祸首。

  • 从左到右阅读该行,并想象每个符号的作用。

  • 更经常地,您还需要查看前几行。

  • 特别是,缺少的;分号在前一行的末尾/语句中丢失。(至少从样式角度而言。)

  • 如果错误地关闭或嵌套了{代码块,}则可能需要进一步研究源代码。使用适当的代码缩进可以简化该过程。

  • 看看语法着色!

  • 字符串,变量和常量都应具有不同的颜色。

  • 运营商也

    +-*/.
    应设置不同的颜色。否则,它们可能处于错误的环境中。

  • 如果看到字符串着色延伸得太远或太短,则说明未变色或缺少结束符”或’字符串标记。

  • 彼此相邻的两个同色标点字符也可能带来麻烦。通常,如果运算符不是,或运算符后的括号++,那么运算符将是孤独的–。在大多数情况下,紧随其后的两个字符串/标识符是错误的。

  • Whitespace是您的朋友。遵循任何编码风格。

  • 暂时中断长行。

  • 您可以在运算符之间或常量和字符串之间自由添加换行符。然后,解析器将具体化行号以解析错误。您可以查看丢失或放错位置的语法符号,而不必查看冗长的代码。

  • 将复杂的if语句拆分为不同的if条件或嵌套条件。

  • 代替冗长的数学公式或逻辑链,请使用临时变量来简化代码。(更具可读性=更少的错误。)

  • 在以下之间添加换行符:

    1. 您可以轻松识别出正确的代码,
    2. 您不确定的部分
    3. 以及解析器抱怨的行。
      对长代码块进行分区确实有助于找到语法错​​误的来源。
  • 注释掉违规代码。

  • 如果您无法找出问题根源,请开始注释掉(并因此暂时删除)代码块。

  • 摆脱分析错误后,您便找到了问题根源。仔细看那里。

  • 有时您想暂时删除完整的功能/方法块。(如果大括号不匹配且代码缩进错误。)

  • 如果无法解决语法问题,请尝试从头开始重写注释掉的部分。

  • 作为新手,请避免使用一些令人困惑的语法构造。

  • 三元? :条件运算符可以压缩代码并且确实有用。但这并不能在所有情况下都有助于可读性。if尽量不要使用简单的陈述。

  • PHP的替代语法(if:/ elseif:/ endif;)在模板中很常见,但是可以说比普通{代码}块更难遵循。

  • 最普遍的新人错误是:

  • 缺少;用于终止语句/行的分号。

  • “或的字符串引号不匹配,’以及其中的未转义的引号。

  • 被遗忘的运算符,特别是对于字符串.连接。

  • (括号不平衡)。在报告的行中计数它们。它们是否相等?

  • 不要忘记解决一个语法问题可以发现下一个语法问题。

  • 如果您解决了一个问题,但在下面的一些代码中发现了其他问题,那么您通常走在正确的道路上。

  • 如果在编辑新语法错误后又出现在同一行中,则您尝试的更改可能是失败的。(尽管并非总是如此。)

如果无法修复,请还原以前工作的代码的备份。

  • 采用源代码版本控制系统。您始终可以查看diff损坏的最后工作版本的。关于语法问题,这可能会有所启发。
  • 不可见的杂散Unipre字符:在某些情况下,您需要在源文件上使用十六进制编辑器或其他编辑器/查看器。仅查看代码无法发现某些问题。

  • 尝试grep –color -P -n “[x80-xFF]” file.php查找非ASCII符号的第一种方法。

  • 特别是BOM,零宽度空格或不间断空格,以及智能引号经常可以在源代码中找到。

  • 请注意将哪种换行符保存在文件中。

  • PHP只接受n换行符,而不接受r回车符。

  • 对于MacOS用户,这有时是个问题(即使在OS X上,对于配置错误的编辑器)。

  • 当使用单行//或#注释时,通常仅是一个问题。//当换行符被忽略时,多行注释很少会干扰解析器。

  • 如果您的语法错误未通过网络传输:您的计算机上发生语法错误。但是,将相同的文件在线发布不再显示。这仅意味着两件事之一:

  • 您正在查看错误的文件!

  • 或者您的代码包含不可见的杂散Unipre(请参见上文)。您可以轻松地找到:只需将代码从Web表单复制回文本编辑器即可。

  • 检查您的PHP版本。并非所有语法构造在每台服务器上都可用。

  • php -v
    用于命令行解释器

  • <?php phpinfo()
    ; 用于通过Web服务器调用的服务器。

这些不一定相同。特别是在使用框架时,您将使它们匹配。

  • 不要将PHP的保留关键字用作函数/方法,类或常量的标识符。

  • 试错是您的最后选择。

如果其他所有方法均失败,则您始终可以搜索错误消息。语法符号不是那么容易搜索(堆栈溢出本身由SymbolHound索引)。因此,在找到相关内容之前,可能需要翻阅几页。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426310.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号