ラボ > PHP:各種エラー、Laravel、Lumen:views関連、エラー関連

「switch(): /* xxx */ endswitch;」のときにでてくるParseError(Bladeディレクティブ)

PHPのスクリプトブロック(<?php /* ... */ ?>)だとエラーなので、その対応

作成日:2023-09-22, 更新日:2024-03-07

出力されたエラー

ParseError
syntax error, unexpected T_INLINE_HTML "", expecting "endswitch" or "case" or "default"

ソース

<?php switch( $exmaple ): ?>

<?php case 1: ?>
a
<?php break; ?>

<?php case 2: ?>
b
<?php break; ?>

<?php endswitch; ?>

原因

「switch」と「case」の間に余計な処理が入っているという扱いっぽい
上記の場合だと「switch」と「case」の間に「改行が出力されている」という扱いでエラーになっているらしい

対応

「<?php switch( $exmaple ): ?><?php case 1: ?>」を一つにまとめて「「<?php switch( $exmaple ): ?> case 1: ?>」」とすれば良いっぽい
…ただ…好きになれない

<?php switch( $exmaple ):

case 1: ?>
a
<?php break; ?>

<?php case 2: ?>
b
<?php break; ?>

<?php endswitch; ?>

こんな記述するなら…使わずに別のアプローチをしたほうが良いかなぁ…

laravelの場合 / Bladeディレクティブ

laravelだと下記のようにすれば対応可能

@switch( $exmaple )

{{-- コメント --}}
@case (1)
a
@break

{{-- コメント --}}
@case (2)
b
@break

@endswitch