Står du over for udfordringen med at Routing i en objektorienteret PHP-applikation? Routing er en central del af enhver webapplikation, da det beslutter, hvordan indgående URL'er tildeles de passende logiske enheder, dvs. controllere og deres handlinger. Denne vejledning hjælper dig med at forstå og implementere routingprocessen i PHP ved at gennemgå tildelingen af controllere og handlinger i detaljer.
Vigtigste indsigter
- Routing muliggør tildelingen af indgående URL-anmodninger til specifikke controller-metoder.
- Navngivningen af controllere og metoder følger bestemte navngivningskonventioner for at sikre konsistens.
- Med PHP Reflection kan du kontrollere, om den specifikke controller-metode eksisterer, før den kaldes.
- Parametre skal behandles omhyggeligt og sendes til de tilknyttede metoder i et associativt array.
Trin-for-trin vejledning
Trin 1: Oprette biblioteksstruktur og namespace
Først opretter du et nyt bibliotek kaldet Controller, hvor du vil placere dine controller-klasser. Det er vigtigt at organisere klasserne i meningsfulde namespaces. For eksempel:

Næste step er at definere namespace for controlleren. Det kunne se således ud:
Trin 2: Definer controller-klasse
I dette trin opretter du en klasse for din ønskede controller. Lad os kalde ham UploadController. Til dette skal du have nogle grundlæggende indstillinger for at initialisere klassen. For eksempel:

Her bør du sikre dig, at alle controller-navne er formateret i små bogstaver for at undgå efterfølgende forvirring. Dette hjælper ikke kun med overblikket, men tillader dig også at opretholde standardiseringsprocessen i din applikation.
Trin 3: Opret controller-instans
Nu opretter du en instans af din controller. Dette gøres typisk gennem en string-formattering, der omfatter det fulde navn på klassen – inklusive namespace. For eksempel:

For at det kan implementeres i den videre logik, skal du kontrollere, om klassen eksisterer, inden du fortsætter med flere trin. Til dette bruger du en simpel if-sætning, der verificerer klassens eksistens.
Trin 4: Exception Handling ved manglende controllere
Hvis controlleren ikke eksisterer, er det klogt at udløse en exception. Brug i dette tilfælde InvalidArgumentException for at give brugeren en klar tilbagemelding om, at den angivne controller er ukendt:

Her kunne du f.eks. give en besked som:
Controller ukendt: [Controller-Navn]
Trin 5: Delte parametre for controller-handlingen
I næste trin handler det om at definere de handlinger og deres metoder for controlleren. I dette eksempel fastslår vi, at der er en metode kaldet save, som er ansvarlig for uploaden. Her beder du PHP om at integrere denne metode lidt i controlleren. Dette gøres gennem en string-formattering, ligesom ved controllerne:

Således sikrer du, at eksterne opkald kun accepteres af autoriserede action-metoder.
Trin 6: Verifikation af action-metode ved hjælp af Reflection
For at sikre, at den angivne metode eksisterer, anvendes PHP’s Reflection nu. Dette gøres ved instansiering af ReflectionClass.

Her kontrollerer du med metoden hasMethod, om den ønskede action-metode faktisk eksisterer i din controller:
Trin 7: Parameteradgangslogik implementere
Efter at have fastlagt controllere og action, er det tid til at bearbejde de indgående parametre. Disse parametre optræder typisk i form af et URL-segment og skal opdeles i par. Til dette bruger du funktionen explode():

I dette trin skal du desuden sikre dig, at antallet af parametre er lige. Hvis dette ikke er tilfældet, er der et ugyldigt antal af parametre – her anbefales det også at bruge en InvalidArgumentException:
Trin 8: Opret et associativt array for parametrene
I næste trin omdanner du parametrene til et associativt array, så du nemt kan videregive dem til action. Dette kan du gøre gennem en løkke, der specifikt kan tildele hvert nøgle-værdi-par:

Her optager du skiftevis nøgler og værdier for at udføre tildelingen, inden du videregiver det endelige array til din controller metode.
Trin 9: Kalde controller-action
Nu bliver det praktisk: Du er klar til at kalde metoden i din controller med de relevante parametre, som du tidligere har defineret. Til dette instansierer du controlleren og kalder metoden som følger:

Sørg for at alle nødvendige trin er udført korrekt til sidst. Du har nu med succes implementeret routing i din PHP-applikation.
Opsummering
I denne tekstvejledning har du lært, hvordan du implementerer routing gennem controllere og handlinger i en objektorienteret PHP-applikation. Fra bibliotekstrukturen til definition og validering af controllere og deres metoder samt håndtering af parametre – alt dette giver dig et kraftfuldt routingsystem til din webapplikation.
Ofte stillede spørgsmål
Hvordan implementerer jeg routing i PHP?Routing organiseres ved at tildele URLs til controllere og deres action-metoder.
Hvad er controllere i PHP?Controllere er klasser, der styrer logikken for behandlingen af anmodninger og kalder de tilsvarende action-metoder.
Hvordan kan jeg sikre, at en action-metode eksisterer?Brug PHP Reflection til at kontrollere, om metoden er til stede i den relevante controller-klasse.
Hvordan behandler jeg URL-parametre?Parametre skal optræde i lige par og kan omdannes til et associativt array ved hjælp af explode().
Hvad sker der, hvis min controller ikke eksisterer?Du bør kaste en passende exception for at indikere, at controlleren er ukendt.