PHP. Heredoc документ
Heredoc документ, делаю как в книге. Вроде код без ошибок, но тут выдает такое.
Код:
<?php
if ('POST' == $_SERVER['REQUEST_METHOD']) {
print 'Hello, ' . $_POST['my_name'];
} else {
print <<<_HTML_
<form method="post" action="$_SERVER[PHP_SELF]">
Your name: <input type="text" name="my_name">
<br>
<input type="submit" value="Say Hello">
</form>
_HTML_;
}
Ошибка:
Parse error: syntax error, unexpected end of file in
D:\Soft\OSPanel\domains\new.loc\www\form.php on line 13
Ответы (1 шт):
Посмотрите версию PHP у себя. Для PHP < 7.3 раньше было ограничение:
строка с закрывающим идентификатором не должна содержать других символов, за исключением точки с запятой (;). Это означает, что идентификатор не должен вводиться с отступом и что не может быть никаких пробелов или знаков табуляции до или после точки с запятой. Важно также понимать, что первым символом перед закрывающим идентификатором должен быть символ новой строки, определённый в вашей операционной системе. Например, в UNIX системах, включая macOS, это \n. После закрывающего идентификатора также сразу должна начинаться новая строка.
Если это правило нарушено и закрывающий идентификатор не является "чистым", считается, что закрывающий идентификатор отсутствует и PHP продолжит его поиск дальше. Если в этом случае верный закрывающий идентификатор так и не будет найден, то это вызовет ошибку парсинга с номером строки в конце скрипта.
https://www.php.net/manual/ru/language.types.string.php#language.types.string.syntax.heredoc
а вот в 7.3
https://www.php.net/manual/ru/migration73.new-features.php#migration73.new-features.core.heredoc
Более гибкий синтаксис Heredoc и Nowdoc
После закрывающего идентификатора в doc-строках больше не нужно ставить точку с запятой или новую строку. Кроме того, закрывающий идентификатор может быть с отступом, и в этом случае он будет удалён из всех строк в doc-строке.