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

Обычной переменной присваивают число, строку или массив, а затем получают его обратно, обратившись к значению по имени переменной. Функции устроены похожим образом. Это тоже переменная, только вместо строки или числа в функции хранится блок кода, который вызывается при использовании этой «переменной».

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

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

Типы функций

Разделяют два типа функций — встроенные и пользовательские.

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

Одна из хорошо знакомых функций — функция, которая выводит переданный ей текст на экран — print().

Пользовательские функции программист создаёт самостоятельно. Эти функции используются только внутри одного проекта или сценария.

Анатомия функций

Работа с функциями состоит из объявления и использования.

Перед тем как использовать новую функцию, следует её объявить:

<?php
function <имя функции>(<аргумент функции>) {
    <тело функции>
    return <результат выполнения функции>;
}

Пояснить все составные части функции проще всего на примере.

Допустим, на своём сайте мы хотим показывать, является ли выбранный пользователем год високосным. Для этого напишем функцию, в которую передаётся год. В результате работы функции мы хотим получить значение «истина», если год високосный, и «ложь» — если нет.

Определение такой функции:

<?php
function is_leap_year($year) {
    if ($year % 4 != 0) {
        return false;
    }
    elseif ($year % 100 == 0) {
        if ($year % 400 == 0) {
            return true;
        }
        else {
            return false;
        }
    }
    else {
        return true;
    }
}

Пример использования функции:

<?php
$year = 2034;

if (!is_leap_year($year)) {
    print("2034 год - простой");
}
else {
    print ("2034 год - високосный");
}

Потренироваться использовать функции в PHP можно в этом тренажёре.

Аргументы функции и область видимости

Наша функция умеет вычислять, является ли переданный год високосным.

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

Аргументы функции — это переменные, которые функция может получить из внешнего кода. В примере с is_leap_year такая переменная была только одна — $year.

Верно и обратное — переменные, определённые внутри функции, не будут доступны извне. Такие переменные называются локальными, потому что они локальны по отношению к функции.

В отличие от аргументов, которых может быть несколько, вернуть во внешний код функция может только одно значение — с помощью инструкции return (возврат). Возвращаемое значение называют результатом работы функции.