Лекция 8
Результатом выполнения предыдущей лекции должен стать массив следующего вида:
$task = [
'title' => 'Работать',
'due' => '12:30',
'asigned_to' => 'Менеджер',
'completed' => false
];
Обратите внимание, если мы выведем значения этого массива предыдущим способом, то у ключей будут строчные имена. Это можно поправить обратившись к самому массиву, но что если мы получаем эти данные из другого источника? Таким образом можно применить функцию, отвечающую за форматирование текста надлежащим образом. Приведем пример перебора значений массива выше, но применим функцию uswords к выводимому индексу. Текст должен поменяться на заглавные буквы. Больше информации по данной функции можно получить по ссылке на официальную документацию.
<ul>
<?php foreach ($task as $heading => $value) : ?>
<li>
<strong><?= ucwords($heading) ?>: </strong> <?= $value; ?>
</li>
<?php endforeach; ?>
</ul>
Текущий пример не выводит никакой информации о выполненном задании так как значение является либо false либо true. Аналогично не хотелось бы выводит значения ключей, а например заменить "title" на "Задача" и тд. Повторюсь, нет нужды изменять сам массив, изменим лучше запись списка в файле index.view.php.
index.view.php
<!DOCTYPE html>
<head>
</head>
<body>
<h1>Task</h1>
<ul>
<li>
<strong>Задача: </strong> <?= $task['title']; ?>
</li>
<li>
<strong>Выполнить до: </strong> <?= $task['due']; ?>
</li>
<li>
<strong>Назначено: </strong> <?= $task['asigned_to']; ?>
</li>
<li>
<strong>Статус задачи: </strong> <?= $task['completed']; ?>
</li>
</ul>
</body>
</html>
Хотя в результате мы все равно не увидим результата true или false, вместо этого напишем условие которое будет выводить значения основываясь на полученных данных.
<li>
<strong>Статус задачи: </strong> <?= $task['completed'] ? 'Выполнено' : 'Не выполнено'; ?>
</li>
Такая запись позволяет задать значения после знака вопроса если значение слева является true и через двоеточие если false. Рассмотрим тот же самый пример но с использованием условия if:
<?php if ($task['completed']) {
echo 'Выполнено';
} else {
echo 'Не выполнено';
}
Стоит отметить что такой способ полностью аналогичен предыдущему, но предыдущий имеет гораздо более удобный формат написания кода. Минусом предыдущего способа является сложность с добавлением тегов для результирующей строки. Вместо фразы 'Выполнено' можно подставить что угодно, в нашем случае логично будет подставить зеленую галочку о выполнении задания. Чтобы не загружать изображения можно воспользоваться html символами. Эти символы можно взять по этой ссылке.
echo '✅';
Вместо того, чтобы использовать функцию echo для вывода можно воспользоваться простым html. Для этого необходимо воспользоваться блоком if и endif по аналогии с циклом foreach.
<?php if ($task['completed']) : ?>
<span class="icon">✅</span>
<?php endif; ?>
Таким образом легко использовать html теги, в примере выше был добавлен класс "icon" и использовались теги span. Возникает только один вопрос, куда делось условие else и elseif. Переделаем пример таким образом чтобы присутствовал пример с else.
index.view.php
<!DOCTYPE html>
<head>
</head>
<body>
<h1>Поставленная задача</h1>
<ul>
<li>
<strong>Задача: </strong> <?= $task['title']; ?>
</li>
<li>
<strong>Выполнить до: </strong> <?= $task['due']; ?>
</li>
<li>
<strong>Назначено: </strong> <?= $task['asigned_to']; ?>
</li>
<li>
<strong>Статус задачи: </strong>
<!-- <strong>Статус задачи: </strong> <?= $task['completed'] ? 'Выполнено' : 'Не выполнено'; ?> -->
<!-- <?php if ($task['completed']) {
echo '✅';
} else {
echo 'Не выполнено';
}
?> -->
<?php if ($task['completed']) : ?>
<span class="icon">✅</span>
<?php else : ?>
<span class="icon">❌</span>
<?php endif; ?>
</li>
</ul>
</body>
</html>
