使用PHP注释掉其他注释?

13

我能够注释掉已经被注释的行吗?

/*
 * comment 1
 */

$var = 0;
$if();

/*
 * comment 2
 */
$var2 = 2;

有没有一种方法可以将所有这些行一起注释掉? 我经常有一个很长的函数或逻辑,并希望在测试时注释掉其余部分。


4
只有当你使用了行注释(#//)时,才能实现这个功能。 - Yoshi
我不知道是否有一个函数可以用多行注释来实现,但我知道像Dreamweaver这样的IDE有一个删除注释的按钮。所以也许你可以使用它,保存并测试。 - Federico Giust
1
注释块不能嵌套在其他注释块中。 - j08691
想象一下,如果您有这个选项,然后有人想要评论那个超级注释块,然后另一个人想要评论那个超级超级注释块,然后......最好不允许嵌套注释。 :) - Dvir
4个回答

8

您是否考虑过通过将代码放置在if(0)块中来跳过代码?

例如:

<?php
if( 0 ) {
     print("This code is 'commented' out");


... other commented out code is here ...


}
?>

不错!这基本上就是我现在所做的,我只是想知道是否有一种正确的方法来注释掉包括多行注释在内的所有内容。 - Gershon Herczeg
很好,可能比我的heredoc示例更好,因为它的开销非常小。 - Mike
3
使用这种方法的附加好处是,您可以通过在“if”语句中使用类似配置变量的方式来编程地打开和关闭代码块。例如,if ($debug)if (! $debug) - HeatfanJohn

1

来自 PHP 手册:

'C' style comments end at the first */ encountered. Make sure you don't nest 'C' style comments. It is easy to make this mistake if you are trying to comment out a large block of code.

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

你可以尝试使用Heredoc语法,例如:

<<<VAR    
    /*
     * comment 1
     */

    $var = 0;
    $if();

    /*
     * comment 2
     */
    $var2 = 2;
VAR;

这看起来非常有趣,你尝试过类似的东西吗? - Gershon Herczeg
在使用这个方法时,我遇到了一些错误:“未定义的变量”。 - HamZa
Heredoc?由于变量扩展而不好的想法。改用Nowdoc:<<<'VAR' - ThiefMaster

0
不。你最好的选择是节约使用注释块/* */,并使用更多的行注释//#
注释块可以隐藏多行,即使这些行有单行注释。但是,注释块不能与其内部的另一个注释块一起使用。
语法在这里:http://php.net/manual/zh/language.basic-syntax.comments.php

为什么有人会对此进行负评,我不知道原因。我的回应是针对问题中的评论,而非使用活动代码。 - JClaspill

0

大多数代码编辑器都允许您使用//来注释和取消注释整个代码块。通常是一些组合键,例如Ctrl+Shift/Alt+C。非常方便,请查看您的文本编辑器的参考资料。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接