- Теория
- Теория
Объявляем и вызываем функцию
Мы вывели на страницу товары из массива $order
, но цена и стоимость доставки у всех товаров получились одинаковые. Почему так вышло?
Дело в том, что мы считаем итоговую цену и стоимость доставки только один раз — для того товара, который записан в переменной $id
в сценарии. После этого в цикле подставляем одни и те же числа для всех товаров.
$id = $order[1]; // Получаем идентификатор товара
$price = get_product_price($id); // Получаем цену товара
$discount = get_product_discount($id); // Получаем скидку на товар
$final_price = $price - $discount; // Считаем итоговую цену
// Выводим одну и ту же цену для всех товаров
<?php foreach($order as $id): ?>
...
<td><?= $final_price ?></td>
...
<?php endforeach; ?>
Нам нужно посчитать цену и стоимость доставки для каждого товара в отдельности. Переносить вычисления внутрь цикла в шаблоне — плохая идея. Что если верстальщик случайно что-то удалит? Или понадобится вывести данные в нескольких местах?
Есть способ получше. Используем функцию.
Функция — это фрагмент кода, который можно написать один раз, а затем использовать, когда потребуется.
Прежде чем использовать функцию, её объявляют с помощью ключевого слова function
. После него указывают имя функции. Оно должно начинаться с латинской буквы или знака подчёркивания.
После имени функции пишут круглые скобки, а затем — тело функции в фигурных скобках. В теле функции находится тот код, который функция будет выполнять.
function my_func() {
keks_log('Я функция my_func');
}
Когда функцию объявляют, PHP запоминает её, но при этом код внутри фигурных скобок не выполняется. Это похоже на «быстрый набор» на смартфоне. Сначала мы привязываем номер к ярлыку на экране, а потом нажимаем на этот ярлык, чтобы позвонить. Так же и с функциями. Сначала мы привязываем фрагмент кода к имени функции, а после вызываем эту функцию.
Чтобы вызвать функцию, пишем её имя и круглые скобки:
my_func(); // Выведет: "Я функция my_func"
Функцию можно вызывать любое число раз.
Создадим функцию для вычисления итоговой цены товара и потренируемся вызывать её.
Думпо временно убрал часть кода из сценария, чтобы он нам не мешал.
- index.html
Вы перешли на другую страницу
Кликните внутри мини-браузера, чтобы поставить фокус в это окно.