T_INLINE_HTML? Что с этим не так?

<? switch($data['type']) : ?>
<? case 'log': ?>

    <? while ($row = $data['loop']->fetch()) : ?>
        <table class="t-errors">
            <tr>
                <td>
                    <b>IP:</b> <? echo $row['LogShellIP']; ?>
                    <b>Command:</b> <? echo $row['LogShellCommand']; ?>
                    <b>Executed:</b> <? echo $row['LogShellReturn']; ?>
                    <b>Time:</b> <? echo format::time($row['LogShellTime']); ?>
                </td>
            </tr>
        </table>
    <? endwhile; ?>

<? break; ?>

<? case 'fatal': ?>
<? case 'warning': ?>
<? case 'notice': ?>
<? case 'unknown': ?>

    <? while ($row = $data['loop']->fetch()) : ?>
        <table class="t-errors">
            <tr>
                <td <? if ($row['LogErrorSeen'] == 0) { echo 'class="e-selected"'; } ?>>
                    <b>String:</b> <? echo $row['LogErrorString']; ?>
                    <b>File:</b> <? echo $row['LogErrorFile']; ?>
                    <b>Line:</b> <? echo $row['LogErrorLine']; ?>
                    <b>Context:</b> <? echo $row['LogErrorContext']; ?>
                    <b>Ip:</b> <? echo $row['LogErrorIP']; ?>
                    <b>Time:</b> <? echo format::time($row['LogErrorTime']); ?>
                </td>
            </tr>
        </table>
    <? endwhile; ?>

<? break; ?>
<? endswitch; ?>                    

Я получаю эту ошибку:

Ошибка анализа: синтаксическая ошибка, неожиданный T_INLINE_HTML, ожидая T_ENDSWITCH или T_CASE или T_DEFAULT в /Applications/XAMPP/xamppfiles/HTDOCS/Smooth Рамка /tpl/terminal.tpl.php on line 33

Где строка 33 - это строка 2 этого script. Это вставляется в контекст шаблона. Что с этим не так? Он ожидает T_CASE и что есть!

Ответ 1

объединить строки 1 и 2

  <? switch($data['type']):
     case 'log': ?>

см. комментарий в этой ссылке (jeremia at gmx dot в 28-янв-2008 02:52)

Ответ 2

Парсер ожидает маркер T_CASE, но находит новую строку после switch($data['type']) : ?>.

switch (1) : ?> <? case 1: break; endswitch;

дает ошибку синтаксического анализа и, следовательно,

switch (1) : ?>\n<? case 1: break; endswitch;

while

switch (1) : ?><? case 1: break; endswitch; 

нет.;-)