- Теория
- Теория
Объявляем и вызываем функцию
Мы вывели на страницу товары из массива $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"
Функцию можно вызывать любое число раз.
Создадим функцию для вычисления итоговой цены товара и потренируемся вызывать её.
Думпо временно убрал часть кода из сценария, чтобы он нам не мешал.
Хорошо владеете JavaScript, но до сих пор не освоили Node.js? Записывайтесь на профессиональный курс «Node.js. Профессиональная разработка REST API». Цена 12 000 ₽.
- index.html
Вы перешли на другую страницу
Кликните внутри мини-браузера, чтобы поставить фокус в это окно.