©
Ce document utilise Manuel du site Web PHP chinois Libérer
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
');
*/
?>