Использование 'call_user_func'
Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 5 из 68.
Функция call_user_func() предоставляет мощный способ динамического вызова функций в PHP. Вместо того чтобы вызывать функцию напрямую по её имени, вы можете сохранить имя функции в строковой переменной и использовать call_user_func() для её выполнения.
Вот базовый синтаксис:
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // Выводит: Hello World!
?>Это становится особенно полезным, когда вам нужно вызывать различные функции в зависимости от ввода пользователя или условий. Вы также можете передавать аргументы в функцию, включая их в качестве дополнительных параметров:
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // Выводит: 8
?>Этот динамический вызов функций особенно полезен при создании гибких приложений, в которых конкретная функция для выполнения определяется во время выполнения, таких как калькуляторы, обработчики команд или системы маршрутизации.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Задание
ЛегкоСоздайте три функции: multiply, которая принимает два числа и возвращает их произведение, subtract, которая принимает два числа и возвращает их разность, и divide, которая принимает два числа и возвращает их частное.
Вы получите три входных значения: название операции ("multiply", "subtract" или "divide") и два числа. Прочитайте все три входных значения, используйте call_user_func() для выполнения соответствующей функции с двумя числами и выведите результат.
Формат входных данных: Три строки — первая строка содержит название операции, вторая строка содержит первое число, третья строка содержит второе число
Ожидаемый результат: Результат операции
Шпаргалка
Функция call_user_func() позволяет динамически вызывать функции, используя строковую переменную, содержащую имя функции:
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // Выводит: Hello World!
?>Вы можете передавать аргументы в функцию, указывая их в качестве дополнительных параметров:
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // Выводит: 8
?>Попробуйте сами
<?php
// Чтение входных данных
$operation = trim(fgets(STDIN));
$num1 = floatval(fgets(STDIN));
$num2 = floatval(fgets(STDIN));
// TODO: Создайте здесь три функции (multiply, subtract, divide)
// TODO: Используйте call_user_func() для выполнения соответствующей функции
// Вывод результата
echo $result;
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутые функции
Анонимные функцииЗамыкания и 'use'Стрелочные функцииCallback-функцииИспользование 'call_user_func'Функции переменныхПередача по ссылкеРекурсивные функцииИтоги: ассорти из функций4Многомерные массивы
Создание 2D-массиваДоступ к элементам 2D-массиваИзменение элементов 2D-массиваИтерация с вложенными цикламиДвумерные ассоциативные массивыИтоги: Упражнение «Простая сетка»2Продвинутая работа с массивами
Добавление с помощью 'array_push'Удаление с помощью 'array_pop'Добавление с помощью 'array_unshift'Удаление с помощью 'array_shift'Слияние индексных массивовСлияние ассоциативных массивовИзвлечение с помощью 'array_slice'Поиск значений с 'in_array'Поиск ключей с 'array_search'Итоги: Упражнение «Плейлист»3Сортировка массивов
Сортировка индексных массивов по возрастаниюСортировка индексных массивов по убываниюСортировка ассоциативных массивов по значениюСортировка ассоциативных массивов по ключуСортировка в естественном порядкеПользовательская сортировка с помощью 'usort'Итоги: Сортировка таблицы лидеров