0Pricing
PHP Academy · Урок

Определение и вызов функций

Создавайте собственные функции с параметрами и возвращаемыми значениями.

«Определение и вызов функций» — бесплатный урок PHP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

Зачем нужны функции

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

  • Избегайте повторений (принцип DRY)
  • Упрощают тестирование и отладку
  • Делают код понятным без дополнительных комментариев

Определение функции

Используйте ключевое слово function, имя, необязательные параметры и тело функции:

<?php
function greet(string $name): string {
    return 'Hello, ' . $name . '!';
}

echo greet('Alice'); // Hello, Alice!

Параметры и аргументы

Параметры — это имена переменных в определении, а аргументы — фактические значения, передаваемые при вызове:

<?php
function add(int $a, int $b): int {
    return $a + $b;  // $a and $b are parameters
}

$sum = add(3, 4);  // 3 and 4 are arguments
echo $sum;  // 7

Возвращаемые значения

Используйте return, чтобы вернуть значение вызывающему коду. Функция без return возвращает NULL:

<?php
function square(float $n): float {
    return $n * $n;
}

function logMessage(string $msg): void {
    echo '[LOG] ' . $msg . PHP_EOL;
    // void functions must not return a value
}

echo square(4);        // 16
logMessage('started'); // [LOG] started

Передача по значению и по ссылке

По умолчанию PHP передаёт аргументы по значению (создаёт копию). Добавьте перед аргументом &, чтобы передать его по ссылке:

<?php
function doubleByValue(int $n): void {
    $n *= 2;  // changes only the local copy
}

function doubleByRef(int &$n): void {
    $n *= 2;  // changes the original
}

$x = 5;
doubleByValue($x);
echo $x; // 5 — unchanged

doubleByRef($x);
echo $x; // 10 — changed

Несколько точек возврата

Функция может содержать несколько операторов return для досрочного выхода:

<?php
function divide(float $a, float $b): ?float {
    if ($b === 0.0) {
        return null;  // early return on error
    }
    return $a / $b;
}

var_dump(divide(10, 0));   // NULL
echo divide(10, 2);         // 5

Доступность функций до объявления

Функции PHP доступны во всём файле независимо от места их определения. В отличие от JavaScript, для большинства функций PHP объявление до использования NOT требуется:

<?php
echo double(5);  // 10 — works even though double is defined below

function double(int $n): int {
    return $n * 2;
}

// Exception: functions inside conditionals ARE position-sensitive

Рекурсивные функции

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

<?php
function factorial(int $n): int {
    if ($n <= 1) return 1;  // base case
    return $n * factorial($n - 1);  // recursive call
}

echo factorial(5);  // 120

Объявления типов

PHP 7+ поддерживает указание типов параметров и возвращаемых значений. В PHP 8 появились mixed, never и пересечения типов:

<?php
declare(strict_types=1);

function clamp(int $value, int $min, int $max): int {
    return max($min, min($max, $value));
}

echo clamp(150, 0, 100);  // 100
echo clamp(-5,  0, 100);  // 0
echo clamp(42,  0, 100);  // 42

Именованные и встроенные функции

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

<?php
if (function_exists('mb_strlen')) {
    echo mb_strlen('こんにちは');  // 5 — correct multi-byte length
} else {
    echo strlen('こんにちは');      // 15 — byte count, wrong for UTF-8
}

Возврат нескольких значений

Возвращайте несколько значений, вернув массив и распаковав его в месте вызова:

<?php
function minMax(array $arr): array {
    return [min($arr), max($arr)];
}

[$min, $max] = minMax([3, 1, 7, 2, 9]);
echo "Min: $min, Max: $max";  // Min: 1, Max: 9

Быстрая проверка

Что возвращает функция PHP без явно указанного оператора return?

Повторение: функции

Основы функций PHP:

  • Определяйте функции с помощью function name(params): returnType
  • Передавайте параметры по значению (по умолчанию) или по ссылке с помощью &
  • Функции без return возвращают NULL
  • Для рекурсии требуется базовый случай
  • Функции доступны во всём файле (до объявления)

Далее: параметры по умолчанию и переменное число параметров.

Часто задаваемые вопросы

Урок «Определение и вызов функций» бесплатный?

Да — полный текст урока «Определение и вызов функций» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Определение и вызов функций»?

Создавайте собственные функции с параметрами и возвращаемыми значениями. Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Определение и вызов функций»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Определение и вызов функций
  2. Параметры по умолчанию и вариативные параметры
  3. Область видимости переменных: локальная и глобальная
  4. Анонимные функции и замыкания
← Назад к PHP Academy