文字

注释

PHP 支持 C,C++ 和 Unix Shell 风格(Perl 风格)的注释。例如:

<?php
    
echo  "This is a test" // This is a one-line c++ style comment
    
    
echo  "This is yet another test" ;
    echo 
'One Final Test' # This is a one-line shell-style comment
?>

单行注释仅仅注释到行末或者当前的 PHP 代码块,视乎哪个首先出现。这意味着在 // ... ?> 或者 # ... ?> 之后的 HTML 代码将被显示出来:?> 跳出了 PHP 模式并返回了 HTML 模式,//# 并不能影响到这一点。如果启用了 asp_tags 配置选项,其行为和 // %># %> 相同。不过,</script> 标记在单行注释中不会跳出 PHP 模式。

<h1>This is an <?php  # echo 'simple'; ?> example</h1>
<p>The header above will say 'This is an  example'.</p>

C 风格的注释在碰到第一个 */ 时结束。要确保不要嵌套 C 风格的注释。试图注释掉一大块代码时很容易出现该错误。

<?php
 

 
*/
?>

用户评论:

[#1] Haiter [2015-04-30 22:25:13]

Pairs like  the code very good.
Example:
<?php
 echo 2;
 echo 4;
?>

//It returns 24

[#2] J. Prettyman [2014-02-13 05:55:53]

Notes can come in all sorts of shapes and sizes. They vary, and their uses are completely up to the person writing the code. However, I try to keep things consistent in my code that way it's easy for the next person to read. So something like this might help...

<?php

//======================================================================
// CATEGORY LARGE FONT
//======================================================================

//-----------------------------------------------------
// Sub-Category Smaller Font
//-----------------------------------------------------



# Option 1
# Option 2
# Option 3


 
// This is a single line quote.
?>

[#3] magnesium dot oxide dot play+php at gmail dot com [2013-10-10 10:02:58]

It is worth mentioning that, HTML comments have no meaning in PHP parser. So,

<!-- comment
<?php echo some_function(); ?>
-->

WILL execute some_function() and echo result inside HTML comment.

[#4] Anonymous [2013-10-09 07:02:02]

The comment priority is depended on the order:
1. */
2. ?>
3. // and #

[#5] Clem at no dot spam [2013-04-19 14:47:10]

Uncommented:

<?php


echo "foo";


?>


Commented:

<?php

?>

[#6] team at researchbib dot com [2011-09-13 19:25:26]

when the comment string contains '?>', you should be careful.

e.g. output code 1= code 2 is different with code 3
1. with //
<?php

// echo '<?php ?>';

?>


2. with #

<?php

// echo '<?php ?>';

?>


3. with 

<?php



?>

[#7] philip-php at dago dot yourweb dot de [2011-03-05 10:29:49]

It's true, comments do not take up PROCESSING time, but they do take some PARSING time in case you are not using a compile cache of some kind.

[#8] jballard at natoga dot com [2010-12-15 14:28:49]

Comments do NOT take up processing power.

So, for all the people who argue that comments are undesired because they take up processing power now have no reason to comment ;)

<?php

// Control
echo microtime(), "<br />"// 0.25163600 1292450508
echo microtime(), "<br />"// 0.25186000 1292450508

// Test
echo microtime(), "<br />"// 0.25189700 1292450508
# TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST TEST
# .. Above comment repeated 18809 times ..
echo microtime(), "<br />"// 0.25192100 1292450508

?>


They take up about the same amount of time (about meaning on a repeated testing, sometimes the difference between the control and the test was negative and sometimes positive).

[#9] benny at bennyborn dot de [2010-12-08 03:16:06]

This regex should do the job when trying to parse comments

(\/\*(.*?)\*\/)|(^|\s+)\/\/(.*?)(\n|$)|(^|\s+)#(.*?)(\n|$)

[#10] Wolfsbay at ya dot ru [2010-05-12 14:10:37]

If you are using editor with code highlight, it??s much easier to notice error like  */.

[#11] theblazingangel at aol dot com [2007-08-28 15:55:59]

it's perhaps not obvious to some, but the following code will cause a parse error! the ?> in //?> is not treated as commented text, this is a result of having to handle code on one line such as  <?php echo 'something'//comment ?>

<?php
if(1==1)
{
    
//?>
}
?>


i discovered this "anomally" when i commented out a line of code containing a regex which itself contained ?>, with the // style comment.
e.g. //preg_match('/^(?>c|b)at$/', 'cat', $matches);
will cause an error while commented! using  style comments provides a solution. i don't know about # style comments, i don't ever personally use them.

[#12] fun at nybbles dot com [2006-07-13 22:28:39]

a trick I have used in all languages to temporarily block out large sections (usually for test/debug/new-feature purposes), is to set (or define) a var at the top, and use that to conditionally comment the blocks; an added benefit over if(0) (samuli's comment from nov'05) is that u can have several versions or tests running at once, and u dont require cleanup later if u want to keep the blocks in:  just reset the var.

personally, I use this more to conditionally include code for new feature testing, than to block it out,,,, but hey, to each their own :)

this is also the only safe way I know of to easily nest comments in any language, and great for multi-file use, if the conditional variables are placed in an include :)

for example, placed at top of file:

<?php $ver3 TRUE;  
       
$debug2 FALSE
?>
 

and then deeper inside the file: 

<?php if ($ver3) {
           print(
"This code is included since we are testing version 3");
         }
?>


<?php if ($debug2) {
           print(
"This code is 'commented' out");
         }
?>

[#13] mst_NO_SPAM_TO_ME at mstsoft dot com [2006-06-05 05:38:23]

This "comment ends on line break or end of PHP Block" thing can be confusing. I discovered this by accident when working with XML Output from PHP...

<?PHP

header
("Content-type: text/xml");



//echo " <?phpxml version=\"1.0\"?>";
//echo "<page>single-line comments end php mode and output your code.</page>";

?>


I would expect the comment to work, but there is no parsing in comments so the String suddenly becomes a PHP  end-block tag, which is correct reading this documentation.

cheers,
martin
PS: You even see the behavior in the Syntax highlighting :-)

[#14] J Lee [2006-05-25 23:39:53]

MSpreij (8-May-2005) says   overrides //  
Anonymous (26-Jan-2006) says // overrides 

Actually, both are correct. Once a comment is opened, *everything* is ignored until the end of the comment (or the end of the php block) is reached.

Thus, if a comment is opened with: 
   //  then  are "overridden" until after end-of-line 
   

[#15] [2006-01-21 01:46:21]

M Spreij wrote, 08-May-2005 08:15...
A nice way to toggle the commenting of blocks of code can be done by mixing the two comment styles:
...
This works because a  overrides //. 

The final sentence should be the other way round, i.e.

This works because a // overrides . 
(If it didn't the  would comment out the code regardless of whether an additional '/' is prefixed to the first line).

[#16] samuli dot karevaara at lamk dot fi [2005-11-11 08:30:47]

If you want to comment out large sections of code (temporarily, usually and hopefully), consider using
<?php
if (0) {
     print(
"This code is 'commented' out");
}
?>

instead of . Otherwise, as noted here, you will have parse errors if the block that you commented out contains */ somewhere, like in regexp or in another comment.

[#17] hcderaad at wanadoo dot nl [2005-06-29 13:51:51]

Comments in PHP can be used for several purposes, a very interesting one being that you can generate API documentation directly from them by using PHPDocumentor (http://www.phpdoc.org/).

Therefor one has to use a JavaDoc-like comment syntax (conforms to the DocBook DTD), example:
<?php

?>

Some basic html-like formatting is supported with this (ie <br> tags) to create something of a layout.

[#18] M Spreij [2005-05-08 12:15:37]

A nice way to toggle the commenting of blocks of code can be done by mixing the two comment styles:
<?php
/
sort($morecode);
?>


Now by taking out one / on the first line..

<?php

sort($morecode);
?>

..the block is suddenly commented out.
This works because a  overrides //. You can even "flip" two blocks, like this:
<?php
/
if ($bar) {
  echo $foo;
}
// */
?>

vs
<?php

if ($bar) {
  echo 
$foo;
}
// */
?>

[#19] Steve [2004-12-15 04:41:38]

Be careful when commenting out regular expressions.

E.g. the following causes a parser error.

I do prefer using # as regexp delimiter anyway so it won't hurt me ;-)

<?php 

');

*/

?>

上一篇: 下一篇: