Глава 4. Функции и организация кода
Функции позволяют не повторять один и тот же код и дают программе структуру. Если переменные отвечают за данные, а условия — за выбор сценария, то функции отвечают за порядок и читаемость. Хорошая функция делает одно понятное действие и возвращает предсказуемый результат.
Объявление функции
Функция объявляется словом 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.
- Используйте простые примеры для обучения, но сразу привыкайте к аккуратной структуре.