PHP переменная функция — что это и как работает

PHP переменная функция — что это и как работает

В программировании есть интересный прием для работы, это вызов определенной функции через переменную. По этому, php переменная функция показывает на примере, что название функции можно включить в переменную как строку а потом вызвать эту переменную как обычную функцию.
Такой приём называется переменная функция (variable function), и он позволяет делать код более гибким и динамичным.

Что такое переменная функция в PHP

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

function hello() {
  echo "Привет, мир!";
}

hello(); // Выведет: Привет, мир!

Но в PHP вызвать функцию можно через значение переменной, значение которое совпадает с именем функции:

function hello() {
  echo "Привет от переменной функции!";
}

$func = "hello";
$func(); // Вызовет hello() и выведет: Привет от переменной функции!

В итоге у нас есть переменная $func у которой есть значение "hello", и есть функция со значением аналогично названию функции. PHP поймет что нужно искать функцию с таким названием и вызовет ее.

Как это работает в PHP

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

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

function multiply($a, $b) {
  return $a * $b;
}

$operation = "multiply"; // Можно сменить на "sum"
echo $operation(5, 3); // 15

Таким образом возможно вызывать любую нужную функцию просто изменив значение переменной $operation.

Переменные функции в PHP и массивы

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

function hi() { echo "Привет!"; }
function bye() { echo "Пока!"; }

$actions = [
  "start" => "hi",
  "end" => "bye"
];

$actions["start"](); // Привет!
$actions["end"]();   // Пока!

Безопасность вызова PHP функций переменных

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

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

if (function_exists($func)) {
  $func();
} else {
  echo "Функция не найдена!";
}

Всегда проверяйте наличие функции прежде чем ее вызвать чтоб избежать ошибок! Где именно чаще применяют переменные функции в php:

  • Callback-механизмы — когда функция передается как параметр в другую функцию.
  • Динамические обработчики — выбор функции в зависимости от нужных условий.
  • Мини-фреймворки и роутинг — выбор контроллера или сервиса по имени действия или передаваемых значений.

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