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

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

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

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

Встроенные функции — это функции, которые за нас уже написали создатели языка программирования и мы можем просто брать их и использовать. В 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 год - високосный");
}

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

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

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

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

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