Ошибка в switch()

alexon

Новичок
Ошибка в switch()

PHP 4.3.0 динамический модуль к Apache под Windows 2000
------------------------------------------------------------------------
Написание нижеследующего кода приводит к ошибке:
<? switch ($class->sub) { ?>
&nbsp;&nbsp;&nbsp;&nbsp;<? case structure: { ?>


<? switch ($class->sub) { ?>

<? case structure: { ?>

Parse error: parse error, unexpected T_INLINE_HTML, expecting T_CASE or T_DEFAULT or '}'

Не допускается табуляторов, пробелов и разрывов строк между фрагментами.

Тогда как вариант такого написания работает вполне нормально.

<? switch ($class->sub) { ?>
<? case structure: { ?>

Причем последующее включение
<? case settings: { ?>
например, не завист от местоположения.

Конечно, по идее между первым case после switch ничего не должно стоять, но символы табуляции удобно было бы вставлять для улучшения наглядности структуры кода. Интересно, это баг или так задумано?
 

.des.

Поставил пиво кому надо ;-)
ЧТО ЭТО?

<? ?> ты что каждую строку открываешь и закрыаешь этими тегами???
PHP:
switch($cl->sub)
{
      case "structure":
            // some code
      break;
      case "settings":
            // some code
      break;
      default:
            // some code
}
 

alexon

Новичок
Нет конечно, не каждую, просто между case'ами в данном случае идет HTML, потому и такой синтаксис.
 

.des.

Поставил пиво кому надо ;-)
alexon не пора ли познать дао отделения HTML от кода?
(c) Crazy
 

tony2001

TeaM PHPClub
alexon:
упрости код до трех строк и ты увидишь ошибку.
а в таком коде ты ее до пенсии искать будешь.
 

Crazy

Developer
Автору треда было бы нехило познать даже не дао отделения HTML от кода, а дао внедренного кода как такогово. Для начала нужно научиться видеть невидимые команды echo. И понять, что код

PHP:
<? switch ($class->sub) { ?>

<? case structure: { ?>
эквивалентен для PHP такому:

PHP:
<? switch ($class->sub) {
  echo "\n";
  case structure: { ?>
Почему не компилится второй фрагмент -- очевидно?
 
Сверху