Heredoc и Nowdoc синтаксис

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

В этом модуле вы изучите синтаксис Heredoc и Nowdoc в PHP - мощные инструменты для работы с многострочными строками. Heredoc похож на строки в двойных кавычках, а Nowdoc - на строки в одинарных. Эти синтаксисы особенно полезны при работе с HTML, SQL-запросами или любым многострочным текстом. Вы научитесь правильно оформлять эти конструкции, понимать разницу между ними и избегать типичных ошибок с отступами и закрывающими идентификаторами. Задания расположены от базовых концепций к более сложным случаям использования.

Список тем

Базовый синтаксис Heredoc

id: 39006_task1

Создайте простой Heredoc блок для хранения многострочного текста. Используйте идентификатор EOT для открытия и закрытия блока.

Заполните пропуски
<?php
$text = input1SEOT
Hello World
This is multiline text
input2S;
echo $text;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Исправьте ошибки в Heredoc

id: 39006_task2

В коде есть две ошибки в оформлении Heredoc синтаксиса. Найдите и исправьте их, чтобы код заработал корректно.

Найдите ошибку и исправьте
<?php
$message = <<HTML
<div>
    <h1>Welcome</h1>
</div>
    HTML;
echo $message;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Синтаксис Nowdoc

id: 39006_task3

Создайте Nowdoc блок, который НЕ будет интерполировать переменные. Обратите внимание на кавычки вокруг идентификатора.

Заполните пропуски
<?php
$name = "John";
$text = <<<input1S
Hello $name
Your balance is $100
input2S;
echo $text;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Интерполяция в Heredoc

id: 39006_task4

Определите, что выведет данный код с использованием Heredoc синтаксиса и интерполяцией переменных.

Выберите правильный вариант ответа
<?php
$user = ['name' => 'Alice', 'age' => 25];
$status = 'active';

$message = <<
Сообщения
Проверить
Показать подсказку

Различия Heredoc и Nowdoc

id: 39006_task5

Сопоставьте характеристики с соответствующим синтаксисом.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Интерполирует переменные
Не интерполирует переменные
Идентификатор в одинарных кавычках
Идентификатор без кавычек
Обрабатывает escape-последовательности
Nowdoc
Heredoc
Heredoc
Nowdoc
Heredoc
Сообщения
Проверить
Показать подсказку

Соберите SQL-запрос с Heredoc

id: 39006_task6

Соберите корректный PHP-код, который использует Heredoc для создания SQL-запроса с подстановкой значений.

Перетяните в правильном порядке строки из одного блока в другой
$table = 'users';
<?php
SQL;
echo $query;
WHERE age > {$minAge}
SELECT * FROM {$table}
$minAge = 18;
?>
$query = <<<SQL
$result = mysql_query($query);
ORDER BY name ASC
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Nowdoc без интерполяции

id: 39006_task7

Определите точный вывод этого кода с Nowdoc синтаксисом.

Что должно получиться?
<?php
$price = 99.99;
$currency = 'USD';

$template = <<<'TMPL'
Price: $price $currency
TMPL;

echo trim($template);
?>
Сообщения
Проверить
Показать подсказку

Проблемы с отступами в Heredoc

id: 39006_task8

В коде есть критическая ошибка с закрывающим идентификатором. Исправьте её для корректной работы.

Найдите ошибку и исправьте
<?php
function getHtml() {
    $title = 'My Page';
    $html = <<<HTML
    <html>
        <head><title>$title</title></head>
    </html>
    HTML;
    return $html;
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Heredoc с массивами и объектами

id: 39006_task9

Используйте правильный синтаксис для доступа к элементам массива и свойствам объекта внутри Heredoc.

Заполните пропуски
<?php
$config = ['host' => 'localhost', 'port' => 3306];
$db = new stdClass();
$db->name = 'mydb';

$connection = <<<INFO
Database: input1S
Host: input2S
Port: input3S
INFO;

echo $connection;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Escape-последовательности в Heredoc и Nowdoc

id: 39006_task10

Определите результат работы кода с escape-последовательностями в разных типах синтаксиса.

Выберите правильный вариант ответа
<?php
$heredoc = <<
Сообщения
Проверить
Показать подсказку

HTML-шаблон с Heredoc

id: 39006_task11

Создайте функцию, которая генерирует HTML-страницу используя Heredoc с подстановкой переменных из массива данных.

Перетяните в правильном порядке строки из одного блока в другой
function generatePage($data) {
<?php
    return $html;
    $title = $data['title'];
}
HTML;
    $html = <<<HTML
    $content = $data['content'];
<h1>$title</h1>
<p>$content</p>
echo generatePage(['title' => 'Welcome', 'content' => 'Hello World']);
?>
<div>$content</div>
extract($data);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Комбинация переменных в Heredoc

id: 39006_task12

Определите точный результат вывода кода с различными типами переменных в Heredoc.

Что должно получиться?
<?php
$name = "John";
$age = 30;
$data = ['city' => 'NYC'];

$info = <<
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру