Używanie „call_user_func”
Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 5 z 68.
Funkcja call_user_func() umożliwia dynamiczne wywoływanie funkcji w PHP. Zamiast wywoływać funkcję bezpośrednio, podając jej nazwę, możesz przechować nazwę funkcji w zmiennej typu string i użyć call_user_func(), aby ją wykonać.
Oto podstawowa składnia:
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // Wyświetla: Hello World!
?>Jest to szczególnie przydatne, gdy trzeba wywoływać różne funkcje na podstawie danych wprowadzonych przez użytkownika lub określonych warunków. Możesz także przekazywać argumenty do funkcji, dodając je jako dodatkowe parametry:
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // Wyświetla: 8
?>To dynamiczne wywoływanie funkcji jest szczególnie przydatne podczas tworzenia elastycznych aplikacji, w których konkretna funkcja do wykonania jest określana w czasie wykonywania programu, na przykład kalkulatorów, procesorów poleceń lub systemów routingu.
Wyzwanie
ŁatwyUtwórz trzy funkcje: multiply, która przyjmuje dwie liczby i zwraca ich iloczyn, subtract, która przyjmuje dwie liczby i zwraca ich różnicę, oraz divide, która przyjmuje dwie liczby i zwraca ich iloraz.
Otrzymasz trzy dane wejściowe: nazwę operacji ("multiply", "subtract" lub "divide") oraz dwie liczby. Wczytaj wszystkie trzy dane wejściowe, użyj call_user_func(), aby wykonać odpowiednią funkcję z użyciem tych dwóch liczb, i wypisz wynik.
Format danych wejściowych: Trzy wiersze — pierwszy wiersz zawiera nazwę operacji, drugi wiersz zawiera pierwszą liczbę, a trzeci wiersz zawiera drugą liczbę
Oczekiwane wyjście: Wynik operacji
Spróbuj swoich sił
<?php
// Odczytaj dane wejściowe
$operation = trim(fgets(STDIN));
$num1 = floatval(fgets(STDIN));
$num2 = floatval(fgets(STDIN));
// TODO: Utwórz tutaj trzy funkcje (multiply, subtract, divide)
// TODO: Użyj call_user_func(), aby wykonać odpowiednią funkcję
// Wyświetl wynik
echo $result;
?>Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane funkcje
Funkcje anonimoweDomknięcia i „use”Funkcje strzałkoweFunkcje zwrotneUżywanie „call_user_func”Funkcje zmiennePrzekazywanie przez referencjęFunkcje rekurencyjnePowtórka: przegląd funkcji4Tablice wielowymiarowe
Tworzenie tablicy 2DDostęp do elementów tablicy 2DModyfikowanie elementów tablicy 2DIterowanie z użyciem zagnieżdżonych pętliAsocjacyjne tablice 2DPodsumowanie: ćwiczenie z prostą siatką2Zaawansowane operacje na tablicach
Dodawanie za pomocą 'array_push'Usuwanie za pomocą 'array_pop'Dodawanie za pomocą 'array_unshift'Usuwanie za pomocą 'array_shift'Łączenie tablic indeksowanychŁączenie tablic asocjacyjnychWyodrębnianie za pomocą 'array_slice'Wyszukiwanie wartości za pomocą 'in_array'Wyszukiwanie kluczy za pomocą 'array_search'Podsumowanie: ćwiczenie z playlistą3Sortowanie tablic
Sortowanie tablic indeksowanych rosnącoSortowanie tablic indeksowanych malejącoSortowanie tablic asocjacyjnych według wartościSortowanie tablic asocjacyjnych według kluczaSortowanie w kolejności naturalnejSortowanie niestandardowe za pomocą 'usort'Podsumowanie: sortowanie tabeli wynikówPoćwicz samodzielnie: Kompilator PHP online