【问题标题】:Multiple line comment inside multiple line comment in PHPPHP中的多行注释内的多行注释
【发布时间】:2011-08-08 03:51:32
【问题描述】:
<?php
/*
    /* this is a comment */
*/
?>

PHP 返回“语法错误”...这只是使用多行注释的完全错误的方式吗?

有时我需要注释掉一大块代码进行测试,而这个块包含数百行,里面有很多多行cmets。

注释掉这个大块的最佳方法是什么?除了暂时从文件中删除吗?

【问题讨论】:

  • 你为什么要这样做?

标签: php comments


【解决方案1】:

来自PHP manual

'C' 风格的 cmets 在遇到的第一个 */ 处结束。确保你 不要嵌套 'C' 风格的 cmets。如果你很容易犯这个错误 正在尝试注释掉一大段代码。

<?php
 /*
    echo 'This is a test'; /* This comment will cause a problem */
 */
?>

:(

【讨论】:

  • 所以你是说我唯一能做的就是在多行注释中使用 // 或者从文件中临时删除块?
  • @dudeMatt - 是的,不幸的是 - 或者使用能够很好地进行“大规模替换”的 IDE。或者创建自己的脚本。
  • 这是不可靠的,因为无论如何在正则表达式中包含/**/ 是可行的。
  • 添加到答案中,您的第一个评论块在第二个评论块结束时结束。所以第一个注释块变成/* echo ... */,然后最后一个*/被读取为代码。
  • 据我了解,cmets 应该用于详细说明语法,但仅用于描述块或语句正在做什么。理想情况下,cmets 内不应该有任何正则表达式。
【解决方案2】:

没有很好的方法可以做到这一点,所以我通常只使用以下解决方法:

<?php if(false): ?>

Whatever needs to be commented out.

<?php endif; ?>

【讨论】:

  • 我使用与function ignore(){ ... }类似的方法
  • 也可以工作...最终我开始让我的 ide 完成工作...在 vim 中,您可以轻松地将您的动作设置为 gc 并让它在所有地方添加斜杠...
【解决方案3】:

根据设计,PHP 语法不允许这样做。

所以我认为实现这一目标的最简单方法是删除所有/ 字符,然后是*

例如,以下代码:

/*

  /*
   * Comment 1
   */

  /*
   * Comment 2
   */

*/

会变成:

/*

  /*
   * Comment 1
   *

  /*
   * Comment 2
   *

*/

【讨论】:

    【解决方案4】:

    我会说这取决于您的 IDE/编辑器。某些 IDE 具有“注释”功能,它将在选定区域的所有行上执行单行 cmets (//),因此您可以选择整个范围并单击该按钮。

    如果您的 IDE 没有该功能,那么我认为您不走运。

    例如,假设这是您的原始代码

    $a = 1; /* sets a = 1 */
    $b = 2;
    /*
        blah blah
    */
    

    如果您在某些 IDE 中突出显示整个内容并单击评论按钮,您最终会得到:

    // $a = 1; /* sets a = 1 */
    // $b = 2;
    // /*
    //     blah blah
    // */
    

    // cmets 获胜,这意味着你只是做了你想要完成的事情。

    【讨论】:

    • IDE?编辑?什么样的编辑器会告诉 PHP 以我的方式评论代码?不!这是一个与 PHP 相关的问题...与编辑器无关...
    • 伙计,放松。我想说的是,如果你的IDE让你用单行cmet做一键注释,那你就可以一键注释多行,那批有没有多行cmet无所谓.查看我的编辑。
    • 啊哈,带回了 eclipse 的记忆... 'Ctrl->/' 全部都被评论了
    • @dudeMatt - 如果它让你感觉更好,那么 JavaScript 中也存在同样的问题,“永远不要在 JavaScript 中使用 // 因为 teh lolzboat cud sink”(Oscar Wilde,1748 年)。
    • @Joe,好吧,我的错。是的,我正在使用 EditPlus,它确实具有该功能,但毕竟有这么多 // 对我来说看起来很糟糕。
    【解决方案5】:

    嵌套注释的快速解决方案:

    将关闭的*/ 变成* /

    换句话说:只需设置一个空格。

    【讨论】:

      【解决方案6】:

      为了明智的选择,只需在“yourCodeBlock.php”中添加并保存整个所需的评论代码部分,然后:

      <?php
      /*
      include("yourCodeBlock.php");
      */
      ?>
      

      或简单的单行注释

      <?php
      //include("yourCodeBlock.php");
      ?>
      

      【讨论】:

        猜你喜欢
        • 2014-01-15
        • 2013-12-15
        • 2015-08-15
        • 2011-09-16
        • 2021-11-27
        • 2011-07-02
        • 2015-08-25
        • 2010-12-03
        • 2011-02-28
        相关资源
        最近更新 更多