Функции
Функция — это именованный кусок кода, который можно вызывать много раз. Функции избавляют от повторов и дают частям программы понятные имена.
Объявление и вызов
Функция объявляется словом function. После имени идут круглые скобки, а в фигурных — код, который она выполняет:
<?php
function sayHello()
{
echo 'Привет!';
}
sayHello();Объявление само ничего не выполняет — код внутри запускается только при вызове. Вызывать функцию можно сколько угодно раз.
Параметры
В скобках перечисляют параметры — данные, которые функция получает при вызове:
<?php
function sayHello($name)
{
echo "Привет, $name!";
}
sayHello('Анна'); // Привет, Анна!Возврат значения
Оператор return возвращает результат туда, откуда функцию вызвали. Его можно сохранить, передать дальше или использовать в выражении:
<?php
function square($n)
{
return $n * $n;
}
$total = square(3) + square(4);
echo $total; // 25Функция с return гибче, чем функция с echo: она не решает за вас, что делать с результатом.
Значения по умолчанию
Параметру можно задать значение по умолчанию — тогда при вызове его разрешено не передавать:
<?php
function power($base, $exponent = 2)
{
return $base ** $exponent;
}
echo power(3); // 9Параметры со значениями по умолчанию ставят в конце списка.
Типы
Перед параметром можно указать его тип, а после двоеточия — тип результата. PHP проверит, что в функцию передали подходящие значения, и сообщит об ошибке сразу, а не в неожиданном месте позже:
<?php
function double(int $n): int
{
return $n * 2;
}
echo double(5); // 10Типы необязательны, но в настоящих проектах их указывают почти всегда.
Область видимости
Переменные, созданные внутри функции, снаружи не существуют. И наоборот: функция не видит внешние переменные — всё нужное передают через параметры.
<?php
function triple(int $n): int
{
$result = $n * 3;
return $result;
}
echo triple(5); // 15После вызова переменная $result исчезает. Благодаря этому функции не мешают друг другу, даже если используют одинаковые имена.
Стрелочные функции
Короткую функцию можно записать в одну строку и сохранить в переменную:
<?php
$square = fn ($n) => $n * $n;
echo $square(4); // 16Такие функции удобно передавать в другие функции. Например, array_map() применяет функцию к каждому элементу массива:
<?php
$square = fn ($n) => $n * $n;
echo implode(', ', array_map($square, [1, 2, 3])); // 1, 4, 9