Funkcje zwrotne
Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 4 z 68.
Funkcja zwrotna to funkcja przekazywana jako argument innej funkcji. Zamiast wywoływać ją od razu, przekazujesz jej nazwę, aby funkcja, która ją otrzymuje, mogła wywołać ją później, gdy będzie potrzebna.
Aby przekazać funkcję jako funkcję zwrotną, wystarczy użyć jej nazwy jako ciągu znaków:
<?php
function greet($name) {
echo "Hello, " . $name . "!";
}
function processUser($username, $callback) {
// Wykonaj pewne przetwarzanie...
$callback($username); // Wywołaj funkcję zwrotną
}
processUser("Alice", "greet"); // Wypisuje: Hello, Alice!
?>W tym przykładzie "greet" jest przekazywane jako funkcja zwrotna do processUser(). Funkcja processUser() wywołuje następnie funkcję zwrotną, używając ciągu znaków jako nazwy funkcji.
Funkcje zwrotne są niezwykle przydatne, ponieważ zwiększają elastyczność funkcji. Ta sama funkcja może wykonywać różne działania w zależności od tego, którą funkcję zwrotną jej przekażesz. Ta koncepcja jest podstawą działania wielu wbudowanych funkcji PHP, takich jak array_map() i array_filter(), które poznasz później w tym kursie.
Wyzwanie
ŁatwyUtwórz dwie funkcje: jedną o nazwie formatUppercase, która przyjmuje ciąg znaków i zwraca go zapisany wielkimi literami, oraz drugą o nazwie formatLowercase, która przyjmuje ciąg znaków i zwraca go zapisany małymi literami.
Następnie utwórz funkcję o nazwie applyFormat, która przyjmuje dwa parametry: ciąg tekstowy i nazwę funkcji zwrotnej. Funkcja ta powinna zastosować funkcję zwrotną do tekstu i zwrócić wynik.
Otrzymasz dwa dane wejściowe: typ operacji ("upper" lub "lower") oraz tekst do sformatowania. Odczytaj oba dane wejściowe, ustal, której funkcji zwrotnej użyć na podstawie typu operacji, wywołaj applyFormat z odpowiednią funkcją zwrotną i wypisz sformatowany wynik.
Format danych wejściowych: Dwa wiersze — pierwszy wiersz zawiera typ operacji ("upper" lub "lower"), drugi wiersz zawiera tekst do sformatowania
Oczekiwany wynik: Sformatowany tekst zależnie od typu operacji
Spróbuj swoich sił
<?php
// Odczytaj dane wejściowe
$operation = trim(fgets(STDIN));
$text = trim(fgets(STDIN));
// TODO: Napisz swój kod poniżej
// Utwórz funkcję formatUppercase
// Utwórz funkcję formatLowercase
// Utwórz funkcję applyFormat
// Określ, której funkcji zwrotnej użyć na podstawie typu operacji
// Wywołaj applyFormat z odpowiednią funkcją zwrotną
// 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