|
CommentsPHP supports 'C', 'C++' and Unix shell-style (Perl style) comments. For example: <?php
The "one-line" comment styles only comment to the end of
the line or the current block of PHP code, whichever comes first.
This means that HTML code after <h1>This is an <?php # echo 'simple';?> example.</h1>
'C' style comments end at the first <?php Related Examples ( Source code ) » language.basic_syntax.comments Examples ( Source code ) » Shell style comments Examples ( Source code ) » PHP comments are usually preceded by double slashes Code Examples / Notes » language.basic_syntax.commentsmst_no_spam_to_me
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 "<?xml version=\"1.0\"?>"; echo "<page>multi-line comments work as expected.</page>"; */ //echo "<?xml 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 :-) j lee
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 /* and */ are "overridden" until after end-of-line /* then // is "overridden" until after */ 21-jan-2006 09:46
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). theblazingangel
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. samuli dot karevaara
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 /* comment block */. 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. hcderaad
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 /** * The second * here opens the DocBook commentblock, which could later on * in your development cycle save you a lot of time by preventing you having to rewrite * major documentation parts to generate some usable form of documentation. */ ?> Some basic html-like formatting is supported with this (ie tags) to create something of a layout. steve
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 /* $f->setPattern('/^\d.*/'); */ ?> fun
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"); } ?> m spreij
A nice way to toggle the commenting of blocks of code can be done by mixing the two comment styles: <?php //* if ($foo) { echo $bar; } // */ sort($morecode); ?> Now by taking out one / on the first line.. <?php /* if ($foo) { echo $bar; } // */ sort($morecode); ?> ..the block is suddenly commented out. This works because a /* .. */ overrides //. You can even "flip" two blocks, like this: <?php //* if ($foo) { echo $bar; } /*/ if ($bar) { echo $foo; } // */ ?> vs <?php /* if ($foo) { echo $bar; } /*/ if ($bar) { echo $foo; } // */ ?> |