Interfejsy a programowanie funkcyjne
Założenie: Pokażemy, jak interfejs może definiować typ funkcji i jak to ułatwia programowanie funkcyjne w PHP.
Krok po kroku:
- Definicja interfejsu: Zdefiniujmy interfejs określający funkcję, która przyjmuje liczbę i zwraca jej kwadrat.
- Implementacja interfejsu: Zaimplementujmy ten interfejs w klasie.
- Użycie funkcji anonimowej: Użyjmy funkcji anonimowej zgodnej z interfejsem.
- Wywołanie funkcji: Wywołajmy funkcję (zarówno klasową jak i anonimową) i wyświetlmy wynik.
interface SquareCalculator {
public function calculate(int $number): int;
}
Ten kod definiuje interfejs SquareCalculator
z metodą calculate
, która przyjmuje liczbę całkowitą i zwraca liczbę całkowitą (kwadrat liczby wejściowej).
class MySquareCalculator implements SquareCalculator {
public function calculate(int $number): int {
return $number * $number;
}
}
Klasa MySquareCalculator
implementuje interfejs SquareCalculator
, zapewniając implementację metody calculate
.
$anonymousCalculator = function(int $number): int {
return $number * $number;
};
//Sprawdzenie typu
if ($anonymousCalculator instanceof SquareCalculator) {
echo "Funkcja anonimowa jest zgodna z interfejsem!";
} else {
echo "Funkcja anonimowa NIE jest zgodna z interfejsem!";
}
Tworzymy funkcję anonimową, która spełnia wymagania interfejsu SquareCalculator
. Później sprawdzamy czy jest zgodna z interfejsem za pomocą `instanceof`.
$calculator = new MySquareCalculator();
echo "Wynik (klasa): " . $calculator->calculate(5) . "\n"; // Wyświetli 25
echo "Wynik (funkcja anonimowa): " . $anonymousCalculator(5) . "\n"; // Wyświetli 25
Ten kod pokazuje, jak wywołać metodę calculate
zarówno z obiektu klasy, jak i z funkcji anonimowej.
Ten przykład pokazuje podstawowe zastosowanie interfejsów do definiowania typów funkcji w PHP, co jest przydatne w programowaniu funkcyjnym. Zachęcamy do dalszego zgłębiania tematu!