Stoisz przed wyzwaniem, Routing w obiektowej PHP-aplikacji odpowiednio odwzorować? Routing jest centralnym elementem każdej aplikacji internetowej, ponieważ decyduje, jak przychodzące URL-e są przypisywane do odpowiednich komponentów logiki, czyli kontrolerów i ich akcji. Ten przewodnik pomoże Ci zrozumieć i zaimplementować proces routingu w PHP, przechodząc szczegółowo przez przypisanie kontrolerów i akcji.
Najważniejsze wnioski
- Routing umożliwia przypisanie przychodzących żądań URL do specyficznych metod kontrolerów.
- Nazewnictwo kontrolerów i metod podąża za określonymi konwencjami, aby zapewnić spójność.
- Dzięki PHP Reflection można sprawdzić, czy dana metoda kontrolera istnieje, zanim zostanie wywołana.
- Parametry muszą być starannie przetwarzane i przekazywane do odpowiednich metod w asocjacyjnym tablicy.
Instrukcje krok po kroku
Krok 1: Utworzenie struktury katalogów i przestrzeni nazw
Najpierw tworzysz nowy katalog o nazwie Controller, w którym umieścisz swoje klasy kontrolerów. Ważne jest, aby uporządkować klasy w sensowne przestrzenie nazw. Na przykład:

Następnie definiujesz przestrzeń nazw dla kontrolera. Może to wyglądać następująco:
Krok 2: Zdefiniowanie klasy kontrolera
W tym kroku tworzysz klasę dla swojego kontrolera, nazwijmy go UploadController. Będziesz potrzebować kilku podstawowych ustawień, aby zainicjalizować klasę. Na przykład:

Przy tym powinieneś upewnić się, że wszystkie nazwy kontrolerów są sformatowane małymi literami, aby uniknąć późniejszych nieporozumień. Pomaga to nie tylko w przejrzystości, ale także pozwala ci utrzymać proces standaryzacji w swojej aplikacji.
Krok 3: Utworzenie instancji kontrolera
Teraz tworzysz instancję swojego kontrolera. Zwykle odbywa się to poprzez formatowanie ciągu, które obejmuje pełną nazwę klasy – w tym przestrzeń nazw. Na przykład:

Aby można było to łatwo wdrożyć w dalszej logice, sprawdź, czy klasa istnieje, zanim przejdziesz do kolejnych kroków. Użyj prostego zapytania if, które weryfikuje istnienie klasy.
Krok 4: Obsługa wyjątków w przypadku brakujących kontrolerów
Jeśli kontroler nie istnieje, zaleca się zgłoszenie wyjątku. W takim przypadku użyj InvalidArgumentException, aby dać użytkownikowi jasną informację zwrotną, że podany kontroler jest nieznany:

Możesz na przykład wyświetlić taki komunikat:
Kontroler nieznany: [Nazwa kontrolera]
Krok 5: Podzielone parametry dla akcji kontrolera
W następnym kroku chodzi o zdefiniowanie akcji i ich metod dla kontrolera. W tym przykładzie ustalamy, że istnieje metoda o nazwie save, odpowiedzialna za przesyłanie. Zlecasz PHP, aby ta metoda została zintegrowana z kontrolerem. Odbywa się to za pomocą formatowania ciągu, podobnie jak w przypadku kontrolerów:

W ten sposób zapewniasz, że zewnętrzne wywołania są akceptowane tylko przez autoryzowane metody akcji.
Krok 6: Weryfikacja metody akcji przy użyciu Reflection
Aby upewnić się, że podana metoda istnieje, teraz wykorzystuje się Reflection PHP. Dzieje się to poprzez zainicjowanie ReflectionClass.

Sprawdzasz tu za pomocą metody hasMethod, czy pożądana metoda akcji rzeczywiście istnieje w twoim kontrolerze:
Krok 7: Implementacja logiki dostępu do parametrów
Po ustaleniu kontrolerów i akcji nadszedł czas, aby opracować przychodzące parametry. Parametry te zazwyczaj występują w formie segmentu URL i muszą zostać podzielone na pary. Do tego używasz funkcji explode():

W tym kroku musisz również upewnić się, że liczba parametrów jest parzysta. Jeśli tak nie jest, oznacza to, że istnieje nieprawidłowa liczba parametrów – również w tym przypadku zaleca się użycie InvalidArgumentException:
Krok 8: Utworzenie asocjacyjnej tablicy dla parametrów
W następnym kroku przekształcasz parametry w asocjacyjną tablicę, aby można je było łatwo przekazać do akcji. Możesz to zaimplementować za pomocą pętli, która przypisuje każdą parę klucz-wartość:

Przy tym na przemian bierzesz klucze i wartości, aby przeprowadzić przypisanie, zanim przekażesz końcową tablicę do swojej metody kontrolera.
Krok 9: Wywołanie akcji kontrolera
Teraz staje się praktyczne: jesteś gotów do wywołania metody swojego kontrolera z odpowiednimi parametrami, które wcześniej zdefiniowałeś. Aby to zrobić, instancjonujesz kontroler i wywołujesz metodę w następujący sposób:

Upewnij się, że na zakończenie wszystkie niezbędne kroki zostały prawidłowo wykonane. Teraz pomyślnie zaimplementowałeś routing w swojej aplikacji PHP.
Podsumowanie
W tym przewodniku tekstowym nauczyłeś się, jak zaimplementować routing poprzez kontrolery i akcje w obiektowej aplikacji PHP. Rozpoczynając od struktury katalogów, przez definicję i weryfikację kontrolerów i ich metod, aż po obsługę parametrów – wszystko to umożliwia stworzenie potężnego systemu routingu dla twojej aplikacji internetowej.
Najczęściej zadawane pytania
Jak zaimplementować routing w PHP?Routing jest organizowany poprzez przypisanie URL-i do kontrolerów i ich metod akcji.
Co to są kontrolery w PHP?Kontrolery to klasy, które zarządzają logiką przetwarzania żądań i wywołują odpowiednie metody akcji.
Jak mogę upewnić się, że metoda akcji istnieje?Użyj PHP Reflection, aby sprawdzić, czy metoda jest obecna w odpowiedniej klasie kontrolera.
Jak przetwarzam parametry URL?Parametry powinny występować w parzystych parach i mogą być przekształcane za pomocą explode() w asocjacyjną tablicę.
Co się stanie, jeśli mój kontroler nie istnieje?Powinieneś rzucić odpowiedni wyjątek, aby poinformować, że kontroler jest nieznany.