代码之家  ›  专栏  ›  技术社区  ›  Jacobo

如何修复在composer require/dbal之后在symfony组件上引发的语法错误?[副本]

  •  3
  • Jacobo  · 技术社区  · 6 年前

    每个人都会遇到语法错误。即使是有经验的程序员也会打字。对于新手来说,这只是学习过程的一部分。但是,通常很容易解释错误消息,例如:

    意外的符号并不总是真正的罪魁祸首。但行号给出了从哪里开始寻找的大致概念。

    总是看着 代码上下文 . 语法错误往往隐藏在所提到的句子中 以前的代码行 . 将代码与手册中的语法示例进行比较。

    但并不是每个案子都和另一个相符。但也有一些 general steps to solve syntax mistakes 本参考文献总结了常见的缺陷:

    以及:

    虽然Stack Overflow也欢迎新手程序员,但它主要针对专业编程问题。

    • 所以,请花点时间来关注 basic steps
    • 如果你还必须这样做,请展示你自己解决问题的主动性,尝试过的修复方法,以及你对什么看起来或可能是错误的思考过程。

    如果你的 浏览器 显示错误消息,如“SyntaxError:非法字符”,则实际上不是 -相关的,但是 syntax error .


    最后,考虑一下,如果语法错误不是由编辑代码库引起的,而是在外部供应商软件包安装或升级后引起的,那么可能是由于PHP版本不兼容引起的,因此请根据您的平台设置检查供应商的要求。

    0 回复  |  直到 4 年前
        1
  •  0
  •   swapnil akolkar    4 年前

    语法错误是什么?

    PHP属于 C-style imperative 编程语言。它有严格的语法规则,当遇到放错位置的符号或标识符时,它无法从中恢复。它猜不出你的编码意图。

    Function definition syntax abstract

    最重要的提示

    如何解释解析器错误

    典型的语法错误消息如下:

    分析错误:语法错误,意外 ,应为 ' ; 在里面 文件.php 线 217

    语法错误的位置。见上文所述 文件名 行号

    A moniker T_STRING

    调查是很重要的 以前的代码行 也。通常语法错误只是之前发生的意外事故。错误行号正是解析器最终放弃处理所有错误的地方。

    解决语法错误

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

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

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

    • 前几行

      • 尤其是失踪 ; 上一行结尾/语句缺少分号。(至少从文体的角度来看是这样的。)

      • { 代码块 } 简化一下。

    • 看看这个 语法着色 !

      • 操作员 +-*/.

      • " ' 字符串标记。

      • 相邻的两个相同颜色的标点符号也可能意味着麻烦。通常情况下,运营商是孤独的,如果不是 ++ --

    • 空白是你的朋友 . 跟随 编码风格。

    • 暂时打散长队。

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

      • if 语句转换为不同的或嵌套的

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

        1. 你很容易识别出正确的代码,
        2. 你不确定的部分,
        3. 以及解析器抱怨的行。

        划分长代码块 真正地

    • 点评 违规代码。

      • 如果无法隔离问题源,请开始注释掉(从而临时删除)代码块。

      • 一旦你摆脱了解析错误,你就找到了问题的根源。仔细看那里。

      • 如果无法解决语法问题,请尝试 重写 从头开始 .

    • 作为一个新手,要避免一些混乱的语法结构。

      • 三元 ? : 条件运算符可以压缩代码,非常有用。但它并不能帮助所有情况下的可读性。喜欢素色 如果 未翻译的语句。

      • if: / elseif: / endif; { } 阻碍。

    • 最普遍的新来者错误是:

      • ;

      • " ' 以及其中未转义的引语。

      • . 串联。

      • 不平衡 ( 圆括号 ) . 把他们数在报告的行中。他们的人数相等吗?

    • 别忘了解决一个语法问题可以发现下一个语法问题。

      • 如果您消除了一个问题,但在下面的一些代码中出现了其他问题,那么您基本上是在正确的道路上。

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

      • 采用源代码版本控制系统。您可以随时查看 diff 最后一个工作版本。这可能会对语法问题有所启发。
    • :在某些情况下,您需要 use a hexeditor 或者源代码上的其他编辑器/查看器。有些问题仅仅通过查看代码是找不到的。

    • 换行符类型 保存在文件中。

      • \不 换行,不是吗 马车返回。

      • 这对于MacOS用户来说是一个问题(甚至对于配置错误的编辑器,在osx上也是如此)。

      • 它通常只在单行时作为问题出现 // # 使用注释。多行 /*...*/

    • 如果你的 语法错误不会通过web传输 碰巧你的机器有语法错误。但是在网上发布同样的文件已经不再显示了。这只能意味着两件事中的一件:

      • 或者您的代码包含不可见的Unicode(见上文)。 您可以很容易地找到:只需将您的代码从web表单复制回您的文本编辑器。

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

      • php -v

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


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

    • 不要使用 PHP's reserved keywords

    • 试错是你最后的选择。

    如果一切都失败了,你总是可以 您的错误消息。语法符号不容易搜索(堆栈溢出本身由 SymbolHound 尽管如此)。因此,在你找到相关的东西之前,你可能需要多看几页。

    更多指南:

    如果你的网站是空白的,那么通常是语法错误的原因。 通过以下方式启用其显示:

    • error_reporting = E_ALL
    • display_errors = 1

    在你的 php.ini .htaccess 对于mod\u php, .user.ini

    在中断的脚本中启用它为时已晚,因为PHP甚至不能解释/运行第一行。例如,一个快速的解决方法是制作一个包装器脚本 test.php :

    <?php
       error_reporting(E_ALL);
       ini_set("display_errors", 1);
       include("./broken-script.php");
    

    然后通过访问这个包装器脚本来调用失败的代码。

    error_log 看看你的 webserver's error.log 当脚本与HTTP 500响应崩溃时。

        2
  •  0
  •   ofri cofri    4 年前

    我认为这个话题讨论得太多了。使用IDE是完全避免任何语法错误的方法。我甚至会说,在没有IDE的情况下工作有点不专业。为什么?因为现代IDE会在你输入的每个字符后检查你的语法。当您编写代码时,整行都变为红色,并且一个大的警告通知会显示语法错误的确切类型和确切位置,那么就完全不需要搜索其他解决方案了。

    使用语法检查IDE意味着:

    您将(有效地)再也不会遇到语法错误,因为您在键入时看到了正确的语法。说真的。

    具有语法检查功能的优秀IDE(所有IDE都适用于Linux、Windows和Mac):

    1. NetBeans [免费]
    2. PHPStorm [$199美元]
    3. Eclipse 具有 PHP Plugin [免费]
    4. Sublime PHP Syntax Parser )