Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Функции

Функция — это именованный кусок кода, который можно вызывать много раз. Функции избавляют от повторов и дают частям программы понятные имена.

Объявление и вызов

Функция объявляется словом 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

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.