|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-09-26 04:34 UTC] zeug at delirium dot ch
Description: ------------ Hi there This is a very minor bug concerning the structure of a source code rather than its functionality. It's been dealt with in Bug #13387, yet the case was closed back then when it seems to have been fixed in 4.2.0-dev. It's back in 4.3.3. Here are some examples: Example 1, okay: <?php switch ($var): ?> <?php case 1: ?> <?php dothis() ?> <?php endswitch ?> Example 2, okay: <?php switch ($var) { ?> <?php case 1: ?> <?php dothis() ?> <?php } ?> Example 3, syntax error: <?php switch ($var): ?> <?php case 1: ?> <?php dothis() ?> <?php endswitch ?> The parser doesn't seem to like whitespace in HTML between switch and case. When mixing PHP and HTML code, the syntax in example 3 can improve readablility. Reproduce code: --------------- <?php $var = 1 ?> <?php switch ($var): ?> <?php case 1: ?> <?php print $var ?> <?php endswitch ?> Expected result: ---------------- 1 Actual result: -------------- Parse error: parse error, expecting `T_ENDSWITCH' or `T_CASE' or `T_DEFAULT' in .../test.php on line 4 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 10:00:01 2025 UTC |
Actually this is not bug. You can't have anything between switch()..case.. ever. It's not valid. This is same as what you tried: <?php $var = 1; switch (1) { echo " "; case 1: echo $var; } ?>just don't open/close php-tags on every line of your script. <? switch () { //as many empty lines as you want. case 1: break; } ?>Now, that's a matter of taste. I code 99% as classes in external files. So only very little PHP remains in the actual page file, mainly to arrange the HTML output. Picture this: <html> <?php // here go a couple of PHP code using external // classfiles that set a $return value ?> * SOME HTML CODE * <?php select ($return) ?> <?php case 1: ?> * A BUNCH OF HTML CODE * <?php break ?> <?php case 2: ?> * OTHER HTML CODE * <?php break ?> ... <? endswitch ?> * FINAL HTML CODE * </html> I currently omit the empty line between the switch and the first case, yet why is one Newline after the swtich okay, but two Newlines fail parsing?