PHPの言語仕様にそのように記載されているため、括弧が必要です(検出される言語の明示的な正式な仕様がないように見えますが)。
不明な識別子が検出された場合にPHPが行うことは、不明な識別子が使用されたことを通知するE_NOTICEエラーを出力し、その識別子を文字列として使用することを意図していると想定します。
<?php
$foo = unknown_identifier;
echo 'Now printing: ' . $foo; // prints 'Now printing: unknown_identifier' (PHP 5.2.6)
?>
エラーが表示されない理由は、E_NOTICEエラーがエラー報告のしきい値を下回っているためである可能性があります。このしきい値は、error_reportingディレクティブを使用して変更できます。
<?php
error_reporting(E_ALL);
$foo = unknown_identifier;
echo 'Now printing: ' . $foo;
?>
これにより、Yacobyによって上記に投稿された「通知」エラーメッセージが出力されます。
誤解を招くように、E_ALLエラーレポートディレクティブには、実際にはPHP5.xのすべてのレポートレベルが含まれているわけではないことに注意してください。PHP 5では、を使用E_ALL | E_STRICT
してすべてのエラーメッセージを有効にする必要があります。
-編集:多くの人に殴られました。