почему PHP не выдает ошибку синтаксического анализа?

Есть много вопросов «Почему PHP выдает здесь ошибку?». Что ж, это Я обнаружил следующий код, переделывая код, написанный моим коллегой:

foreach($arr as $key => $value) {http://google.com/
  echo $value;
  // ...
}

Моя первая мысль: «Ммм ... как неловко, он, должно быть, случайно вставил это туда ...», а затем: «Подождите. ... этот код никак не запускается ... это должно быть синтаксической ошибкой ". И все же:

 $ php -l test.php
 No syntax errors detected

И действительно, (как и многие другие PHP-коды, которые, казалось бы, не должны запускаться), он запускается в производственной среде без проблем. Так что Я провел небольшое тестирование:

foreach($arr as $key => $value) {http://google.com/ <-- original, no error
foreach($arr as $key => $value) {http: <-- also no syntax error
foreach($arr as $key => $value) {http  <-- bingo! "Unexpected T_ECHO..."

Какой маленький лакомый кусочек грамматики PHP дает такие странные результаты?

(Я использую PHP 5.3.5)

6
задан Marek Sebera 19 January 2012 в 23:47
поделиться