Du står inför utmaningen att Routing i en objektorienterad PHP-applikation korrekt avbilda? Routing är en central del av varje webbapplikation, eftersom den avgör hur inkommande URL:er kopplas till lämpliga logikblock, det vill säga kontroller och deras åtgärder. Denna vägledning hjälper dig att förstå och implementera routingprocessen i PHP genom att vi noggrant går igenom tilldelningen av kontroller och åtgärder.
Viktigaste insikter
- Routing möjliggör kopplingen av inkommande URL-förfrågningar till specifika kontrollermetoder.
- Namnge konventioner för kontroller och metoder följer vissa namngivningskonventioner för att säkerställa konsekvens.
- Med PHP Reflection kan du kontrollera om den specifika kontrollermetoden finns innan den anropas.
- Parametrar måste bearbetas noggrant och överlämnas till de tillhörande metoderna i en associativ array.
Steg-för-steg-guide
Steg 1: Skapa katalogstruktur och namespace
Först skapar du en ny katalog som heter Controller, där du kommer att lagra dina kontrollerklasser. Det är viktigt att dela in klasserna i meningsfulla namespaces. Till exempel:

Nästa steg är att definiera namnet på namespace för controllern. Det kan se ut så här:
Steg 2: Definiera controller-klass
I det här steget skapar du en klass för din önskade controller. Låt oss kalla den UploadController. Du behöver några grundläggande inställningar för att initialisera klassen. Till exempel:

Här bör du se till att du formaterar alla kontroller-namn i gemener för att undvika förvirring senare. Detta hjälper inte bara överskådligheten, utan gör det också möjligt för dig att upprätthålla standardiseringsprocessen i din applikation.
Steg 3: Skapa controller-instans
Nu skapar du en instans av din controller. Detta görs typiskt genom en strängformattering som omfattar det fullständiga namnet på klassen – inklusive namnet på namespace. Till exempel:

För att det ska kunna implementeras enkelt i den efterföljande logiken, kontrollera att klassen existerar innan du går vidare med fler steg. Detta görs med en enkel if-fråga som verifierar existensen av klassen.
Steg 4: Exceptionhantering vid saknade kontroller
Om controllern inte existerar är det lämpligt att utlösa en exception. Använd i detta fall InvalidArgumentException för att ge användaren ett klart svar om att den angivna controllern är okänd:

Här kan du till exempel ge ett meddelande som:
Okänd controller: [Controller-namn]
Steg 5: Delade parametrar för controller-åtgärd
I nästa steg handlar det om att definiera åtgärder och dess metoder för controllern. I detta exempel fastställer vi att det finns en metod som heter save som är ansvarig för uppladdningen. Du ger PHP befogenhet att integrera denna metod lite i controllern. Detta görs via en strängformattering, liknande den som används för kontroller:

Så säkerställer du att externa anrop endast accepteras av auktoriserade åtgärdsmetoder.
Steg 6: Verifikation av åtgärdsmetod med hjälp av Reflection
För att säkerställa att den angivna metoden existerar, används nu PHP:s Reflection. Detta görs genom instansiering av ReflectionClass.

Här kontrollerar du med metoden hasMethod om den önskade åtgärdsmetoden faktiskt finns i din controller:
Steg 7: Implementera parameteråtkomstlogik
Efter att kontroller och åtgärder har fastställts är det dags att bearbeta de inkommande parametrarna. Dessa parametrar förekommer typiskt i form av en URL-segment och måste delas upp i par. Här använder du funktionen explode():

I detta steg måste du också säkerställa att antalet parametrar är jämnt. Om så inte är fallet finns det en ogiltig mängd parametrar – även här rekommenderas en InvalidArgumentException:
Steg 8: Skapa en associativ array för parametrarna
I nästa steg omvandlar du parametrarna till en associativ array så att du enkelt kan överlämna dem till åtgärden. Detta kan göras genom en loop som specifikt kan koppla varje nyckel-värde-par:

Här tar du varannan nyckel och värde för att genomföra tilldelningen innan du överlämnar den slutliga arrayen till din controller-metod.
Steg 9: Anropa controller-åtgärden
Nu blir det praktiskt: Du är redo att anropa metoden för din controller med de motsvarande parametrarna som du har definierat tidigare. För detta instansierar du controllern och anropar metoden på följande sätt:

Se till att alla nödvändiga steg har genomförts korrekt. Du har nu framgångsrikt implementerat routing i din PHP-applikation.
Sammanfattning
I denna textguide har du lärt dig hur du implementerar routing genom kontroller och åtgärder i en objektorienterad PHP-applikation. Börja med katalogstrukturen, via definitionen och kontrollen av kontroller och deras metoder till hanteringen av parametrar – allt detta ger dig ett kraftfullt routingssystem för din webbapplikation.
Vanliga frågor
Hur implementerar jag routing i PHP?Routing organiseras genom att koppla URL:er till kontroller och deras åtgärdsmetoder.
Vad är kontroller i PHP?Kontroller är klasser som styr logik för bearbetning av förfrågningar och anropar motsvarande åtgärdsmetoder.
Hur kan jag säkerställa att en åtgärdsmetod existerar?Använd PHP Reflection för att kontrollera om metoden finns i den aktuella controller-klassen.
Hur bearbetar jag URL-parametrar?Parametrar bör förekomma i jämna par och kan omvandlas till en associativ array via explode().
Vad händer om min controller inte existerar?Du bör kasta en motsvarande exception för att visa att controllern är okänd.