Функции переменных
Часть раздела Логика и управление потоком путешествия по PHP на Coddy. Урок 6 из 68.
Variable functions предлагают ещё один способ динамически вызывать функции в PHP. Вместо использования call_user_func() можно напрямую вызвать функцию, обращаясь с переменной, содержащей имя функции, так, как если бы она сама была функцией.
Синтаксис прост: если у вас есть variable, содержащая имя function, вы можете вызвать эту function, добавив скобки к variable:
<?php
function sayHello() {
echo "Hello World!";
}
$functionName = "sayHello";
$functionName(); // Выводит: Hello World!
?>Это также работает с функциями, которые принимают параметры. Просто передайте аргументы внутри скобок:
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
$func = "greet";
$func("Alice"); // Выводит: Hello, Alice!
?>Переменные functions обеспечивают чистый и интуитивно понятный способ динамического выполнения кода. Эта возможность особенно полезна, когда необходимо вызывать разные functions в зависимости от условий или пользовательского ввода, делая код более гибким и адаптируемым.
Задание
ЛегкоCreate three functions: calculateArea, которая принимает два числа (length и width) и возвращает их произведение, calculatePerimeter, которая принимает два числа и возвращает удвоенную сумму, и calculateDiagonal, которая принимает два числа и возвращает квадратный корень из суммы их квадратов.
Вы получите three inputs: имя operation ("area", "perimeter" или "diagonal"), length и width. Прочитайте все three inputs, store имя function в variable, вызовите эту function, using variable function syntax, с двумя измерениями, и выведите output.
Формат ввода: Три строки — первая строка содержит имя operation, вторая строка содержит length (число, которое может содержать десятичные знаки), третья строка содержит width (число, которое может содержать десятичные знаки)
Ожидаемый output: result вычисления
Попробуйте сами
<?php
// Чтение входных данных
$operation = trim(fgets(STDIN));
$length = floatval(fgets(STDIN));
$width = floatval(fgets(STDIN));
// TODO: Создайте здесь три функции (calculateArea, calculatePerimeter, calculateDiagonal)
// TODO: Вызовите соответствующую функцию, используя синтаксис переменных функций, и сохраните результат
// Вывод результата
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'Итоги: Сортировка таблицы лидеровПотренируйтесь самостоятельно: Онлайн-компилятор PHP