Как сделать переменную параметром в PHP: функции и аргументы

Короткий ответ: переменная становится параметром, когда вы объявляете ее в скобках функции. При вызове функции вы передаете значение, а внутри функции используете параметр как обычную переменную

Новичка здесь часто путают слова “параметр” и “аргумент”. В объявлении функции пишут параметры, а при вызове передают аргументы. На практике люди часто используют эти слова как синонимы, но разница помогает понимать код

Простой пример

<?php

function sayHello(string $name): string
{
    return "Привет, {$name}";
}

$userName = 'Динар';

echo sayHello($userName);

В этом примере $name — параметр функции, а $userName — переменная, которую мы передали как аргумент. Внутри функции значение доступно через $name

Параметр не обязан называться так же

Снаружи переменная может называться $userName, а внутри функции — $name

<?php

function showPrice(int $amount): string
{
    return "Цена: {$amount} рублей";
}

$productPrice = 1500;

echo showPrice($productPrice);

Функция получает значение, а не имя внешней переменной. Поэтому внутреннее имя параметра лучше выбирать по смыслу функции

Несколько параметров

<?php

function makeFullName(string $firstName, string $lastName): string
{
    return $firstName . ' ' . $lastName;
}

echo makeFullName('Иван', 'Петров');

Порядок важен. Первое переданное значение попадет в первый параметр, второе — во второй. Если перепутать порядок, результат тоже будет перепутан

Значение по умолчанию

Параметру можно задать значение по умолчанию

<?php

function createButton(string $text, string $type = 'button'): string
{
    return "<button type=\"{$type}\">{$text}</button>";
}

echo createButton('Отправить', 'submit');
echo createButton('Закрыть');

Если второй аргумент не передан, PHP использует 'button'. Это удобно для настроек, которые чаще всего одинаковые

Типы параметров

В современном PHP полезно указывать типы

<?php

function calculateTotal(int $price, int $count): int
{
    return $price * $count;
}

echo calculateTotal(500, 3);

Типы помогают раньше увидеть ошибку. Если функция ожидает число, а вы передаете массив или объект, PHP сообщит о проблеме понятнее

Возврат результата

Функция не обязана сразу печатать результат. Часто лучше вернуть значение через return, а выводить его снаружи

<?php

function addVat(float $price, float $rate = 0.2): float
{
    return $price + ($price * $rate);
}

$total = addVat(1000);

echo "Итого: {$total}";

Такую функцию проще тестировать и переиспользовать. Она считает, но не решает, где и как показывать результат

Передача массива параметром

Если данных много, удобно передать массив

<?php

function renderUser(array $user): string
{
    return $user['name'] . ', ' . $user['email'];
}

$user = [
    'name' => 'Анна',
    'email' => 'anna@example.com',
];

echo renderUser($user);

Но с массивами важно проверять, что нужные ключи существуют. Иначе можно получить предупреждения

Мини-практика

Напишите функцию formatPhone, которая принимает строку с номером телефона и возвращает ее в читаемом виде. Начните с простого варианта: функция просто добавляет текст Телефон: перед номером

<?php

function formatPhone(string $phone): string
{
    return "Телефон: {$phone}";
}

echo formatPhone('+7 900 000-00-00');

Затем добавьте второй параметр $prefix со значением по умолчанию

Частые ошибки

Используют переменную внутри функции, но не передают ее параметром. Внутри функции нет автоматического доступа ко всем внешним переменным

Путают порядок аргументов. Если функция принимает $price, $count, передавать нужно именно цену, затем количество

Печатают результат внутри функции там, где лучше вернуть значение. Из-за этого функцию сложнее переиспользовать

Не указывают типы. Код работает, но ошибки становятся менее очевидными

Дают параметрам слишком общие имена вроде $a и $b. Через неделю такой код трудно читать

Что почитать дальше по PHP

Если нужен общий маршрут по теме, откройте рубрику PHP. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x