Callback-функции
Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 4 из 68.
Функция обратного вызова (callback-функция) — это функция, которая передается в качестве аргумента другой функции. Вместо того чтобы вызывать функцию немедленно, вы передаете ее имя, чтобы принимающая функция могла вызвать ее позже, когда это потребуется.
Чтобы передать функцию в качестве обратного вызова (callback), вы просто используете имя функции в виде строки:
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
function processUser($username, $callback) {
// Выполняем какую-то обработку...
$callback($username); // Вызываем функцию обратного вызова
}
processUser("Alice", "greet"); // Выводит: Hello, Alice!
?>В этом примере "greet" передается в качестве обратного вызова в processUser(). Функция processUser() затем вызывает этот обратный вызов, используя строку в качестве имени функции.
Обратные вызовы (коллбэки) невероятно полезны, потому что они делают ваши функции более гибкими. Одна и та же функция может выполнять различные действия в зависимости от того, какой коллбэк вы ей передаете. Эта концепция является основополагающей для многих встроенных функций PHP, таких как array_map() и array_filter(), с которыми вы познакомитесь позже в этом курсе.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Задание
ЛегкоСоздайте две функции: одну с именем formatUppercase, которая принимает строку и возвращает ее в верхнем регистре, и другую с именем formatLowercase, которая принимает строку и возвращает ее в нижнем регистре.
Затем создайте функцию с именем applyFormat, которая принимает два параметра: текстовую строку и имя функции обратного вызова (callback). Эта функция должна применить callback к тексту и вернуть результат.
Вы получите два входных значения: тип операции ("upper" или "lower") и текст для форматирования. Прочитайте оба входных значения, определите, какой callback использовать в зависимости от типа операции, вызовите applyFormat с соответствующим callback и выведите отформатированный результат.
Формат входных данных: Две строки — первая строка содержит тип операции ("upper" или "lower"), вторая строка содержит текст для форматирования
Ожидаемый результат: Отформатированный текст в соответствии с типом операции
Шпаргалка
Callback-функция — это функция, которая передается в качестве аргумента другой функции. Вместо того чтобы вызывать функцию немедленно, вы передаете ее имя, чтобы принимающая функция могла вызвать ее позже, когда это потребуется.
Чтобы передать функцию в качестве callback-функции, используйте имя функции в виде строки:
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
function processUser($username, $callback) {
// Выполнение какой-либо обработки...
$callback($username); // Вызов callback-функции
}
processUser("Alice", "greet"); // Выводит: Hello, Alice!
?>Callback-функции делают функции более гибкими, позволяя выполнять различные действия в зависимости от того, какой callback им передан.
Попробуйте сами
<?php
// Чтение входных данных
$operation = trim(fgets(STDIN));
$text = trim(fgets(STDIN));
// TODO: Напишите ваш код ниже
// Создайте функцию formatUppercase
// Создайте функцию formatLowercase
// Создайте функцию applyFormat
// Определите, какой callback использовать в зависимости от типа операции
// Вызовите applyFormat с соответствующим callback
// Вывод результата
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'Итоги: Сортировка таблицы лидеров