• Теория
  • Теория

Передаём функции идентификатор товара

Мы создали функцию, которая возвращает итоговую цену, и вызвали её в шаблоне. В результате у всех товаров на странице снова отобразилась одна и та же цена. Мы зря создавали функцию? Ничего подобного. Чтобы показать правильную цену для каждого товара, осталось лишь передать функции правильные данные.

До этого мы вручную передавали функции полную цену и скидку на товар, но мы можем сказать функции самой получать их из базы данных. Используем специальные команды, чтобы узнать цену и скидку на конкретный товар:

  • get_product_price ($id) — цена;
  • get_product_discount ($id) — скидка.

Для обеих команд нужен идентификатор товара. Укажем, что функция get_final_price принимает его как аргумент. Другие аргументы больше не понадобятся:

function get_final_price($id) {
  ...
}

В теле функции узнаем цену и скидку на товар, чей идентификатор мы получили. Сохраним их в переменные:

$price = get_product_price($id);
$discount = get_product_discount($id);

Функция по-прежнему будет возвращать разницу между $price и $discount, но теперь их значения будут браться из базы данных, а не из аргументов.

Идентификаторы товаров хранятся в массиве $order. С помощью foreach в шаблоне мы получаем новый идентификатор на каждой итерации цикла.

<?php foreach($order as $id): ?>

Вызовем функцию get_final_price внутри цикла и передадим ей в качестве аргумента идентификатор товара. На каждой итерации цикла функция будет вызываться заново, с новым идентификатором. В результате для разных товаров выведется разная итоговая цена.

Вы заметили, что использование команд из базы данных очень похоже на вызовы функций? Это они и есть. Команды get_product_price и get_product_discount — самые обычные функции, просто написанные другими разработчиками.

Переменные, объявленные внутри функции, доступны только внутри этой функции. А внешние переменные, наоборот, внутри функции не видны. Это называется областью видимости. Вы можете узнать о ней больше в документации.

Минимальный вид табов
  • index.html
HTML
HTML

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

100%
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Массивы и функции в PHP» тренажёра «Знакомство с PHP» можно после регистрации и оформления подписки.