phpでviewをテンプレートエンジンとして実装している際に以下のような記載をしたところ
以下のようにエラーになりました。
<?php if ($is_ok): ?>
<p><?php echo $message1; ?></p>
<?php else: ?>
<p><?php echo $message2; ?></p>
<? endif; ?>
エラー内容
Fatal Error - Method Fuel\Core\View::__toString() must not throw an exception, caught ParseError: syntax error, unexpected end of file in /XXX/XXX.php on line 0
調べてみると、
<? endif; ?>
この部分が誤字脱字でした。
short_open_tag
の指定が必要でした。
short_open_tagとは?
php.iniでshort_open_tag
をONにすると<?php
を<?
として省略できます。
が、このphp指定が抜けていたのでおかしくなったようです。
エラー内容が分かりづらい。。
ちなみにphp7.3でもデフォルト値はOnとコメント記載があったのに
設定自体はOffになっていました。
デフォルト設定
; short_open_tag
; Default Value: On
; Development Value: Off
; Production Value: Off
php7.4からは<?
はDeprecatedとなりphp8からは廃止される予定のようなので変わったのかな?