ID: 11447
Updated by: vlad
Reported By: [EMAIL PROTECTED]
Old-Status: Bogus
Status: Open
Bug Type: Scripting Engine problem
Operating system:
PHP Version: 4.0.4pl1
Assigned To:
Comments:
The bug is valid - if you close and reopen the PHP tags between the switch and the
case statement, it is going to bark at you. It shouldn't.
This does not work:
<? switch($var){ ?>
<? case "alpha":
break;
}?>
This does:
<? switch($var){
case "alpha":
break;
}?>
Why in the world would anyone do that, is a whole other issue, still they probably
expect to be able to do just that. If they can't, we either need to document it as
such, (thus re-classify this as documentation problem) or fix it. I do not know what
it takes to fix that, but it is a valid report nevertheless.
Unbogusifying...
Previous Comments:
---------------------------------------------------------------------------
[2001-06-13 14:58:29] [EMAIL PROTECTED]
Which style I use, the "classical" style (using {}) or the "alternative" style (using
: and endswitch), doesn't matter; the problem is the same.
Sniper's comment about using <? ?> several times is surely justified when having
one-line code as in his example, but when it comes to multi-line code, there is an
issue of readability. I think that script A below is easier to read than script B.
Don't you?
--- begin script A ---
<? switch($var): ?>
<? case "alpha": ?>
<p>Alpha</p>
<? break; ?>
<? case "beta": ?>
<p>Beta</p>
<? break; ?>
<? default: ?>
<p>Default</p>
<? break; ?>
<? endswitch; ?>
--- end script A ---
--- begin script B ---
<?
switch($var):
case "alpha": ?>
<p>Alpha</p>
<? break;
case "beta": ?>
<p>Beta</p>
<? break;
default: ?>
<p>Default</p>
<? break;
endswitch; ?>
--- end script B ---
---------------------------------------------------------------------------
[2001-06-13 10:18:56] [EMAIL PROTECTED]
Use the {} instead of the : / endswitch;
ie.
<?php
switch ($value) {
case: ?>
<p>Alpha</p>
<?php
break;
}
?>
And anyway, using <? ?> too much is really not good idea.
This is just stupid: <? some code ?><? more code?><? code..?>
---------------------------------------------------------------------------
[2001-06-12 19:13:44] [EMAIL PROTECTED]
Section 7.4 in the FAQ is a little bit related.
Should perhaps the ending for a block of PHP-code be "?>" followed by any number of
white-space characters?
---------------------------------------------------------------------------
[2001-06-12 18:51:27] [EMAIL PROTECTED]
The following script gave a parse error:
<? switch($var): ?>
<? case "alpha": ?>
<p>Alpha</p>
<? break; ?>
<!-- ... -->
<? endswitch; ?>
Parse error: parse error, expecting `T_CASE' or `T_DEFAULT' or `'}'' in
<my-path>/bug.php on line 2
First I thought that this was really a bug, but then, while typing this report I
realized that non-PHP-mode characters (like the two spaces) probably are converted to
an "echo" instruction, so the PHP-parser sees something like the following code:
switch($var):
echo ' ';
case "alpha":
echo '<p>Alpha</p>';
break;
endswitch;
The parser doesn't expect anything (but PHP-mode white-space) to come between the ':'
on line 1 and 'case' on line 3 and therefore reports parse error. Right?
For the sake of "pretty-scripting", I would like this to change, but at the same time,
now that I understand why the parser complains, I'm not sure if it should be
changed...
---------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=11447&edit=2
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]