КаталогBuilderPHPDocs

Глава 4. Функции и организация кода

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

Современное примечание. Материал обновлён для актуального подхода к PHP-разработке: примеры не привязаны к устаревшим версиям и подходят для понимания PHP 7.4+ и PHP 8.x.

Объявление функции

Функция объявляется словом function, получает имя, параметры и тело. Имя должно описывать действие: calculateTotal, normalizeUrl, getUserName. Если по имени нельзя понять назначение функции, код быстро станет трудным для сопровождения.

function sum($a, $b) {
    return $a + $b;
}
echo sum(2, 3);

Параметры

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

function formatPrice($amount) {
    return number_format($amount, 2, '.', ' ') . ' руб.';
}

Возврат результата

Оператор return завершает функцию и отдаёт результат вызывающему коду. Функция, которая одновременно считает, пишет в базу и выводит HTML, почти всегда слишком сложная. Лучше разделять вычисления и вывод.

function isPositive($value) {
    return $value > 0;
}

Область видимости

Переменная, созданная внутри функции, не видна снаружи. Это защищает код от случайных конфликтов. Глобальные переменные стоит использовать осторожно: они удобны в старых скриптах, но часто усложняют отладку.

$name = 'PHP';
function showName() {
    $name = 'MySQL';
    return $name;
}

Подключение файлов

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

require_once __DIR__ . '/functions.php';

Практический пример

Функция нормализации URL показывает, как простое действие можно вынести из основного кода. Это удобно, если адрес нужно обработать в разных местах проекта.

function normalizeUrl($url) {
    $url = trim($url);
    return rtrim($url, '/');
}

Практические выводы

  • Пишите код так, чтобы тип данных был понятен без догадок.
  • Не смешивайте вывод HTML, расчёты и работу с внешними данными в одном блоке.
  • Проверяйте входные данные до использования, особенно если они пришли из формы, URL или API.
  • Используйте простые примеры для обучения, но сразу привыкайте к аккуратной структуре.