Tu stāvi priekšā izaicinājumam, Routing objektorientētā PHP lietojumprogrammā atbilstoši attēlot? Routing ir centrālā sastāvdaļa katrā Webanwendung, jo tas nosaka, kā ienākošās URL tiek piesaistītas atbilstošiem loģikas komponentiem, proti, kontrolieriem un to darbībām. Šī rokasgrāmata palīdzēs tev saprast un īstenot rutingu PHP, pārlūkojot kontrolieru un darbību piesaisti detalizēti.
Galvenās atziņas
- Routings ļauj ierakstu piesaisti ienākošajām URL pie specifiskām kontrolieru metodēm.
- Kontrolieru un metožu nosaukums seko noteiktām nosaukumu konvencijām, lai nodrošinātu konsekvenci.
- Izmantojot PHP Reflection, var pārbaudīt, vai specifiskā kontroliera metode pastāv, pirms to izsauc.
- Parametrus ir jāapstrādā rūpīgi un jāpārsūta attiecīgajām metodēm asociatīvā masīvā.
Solus pa solim rokasgrāmata
Solis 1: Izveido direktorijas struktūru un nosaukuma telpu
Pirmajā solī tu izveido jaunu direktoriju ar nosaukumu Controller, kurā tu noliksi savas kontrolieru klases. Šajā procesā ir svarīgi grupēt klases jēgpilnos nosaukuma telpās. Piemēram:

Nākamajā solī tu definē nosaukuma telpu kontrolierim. Tas varētu izskatīties šādi:
Sol 2: Definē kontroliera klasi
Šajā solī tu izveido klasi savam vēlamajam kontrolierim. Nosauksim to par UploadController. Tam būs nepieciešami daži pamata iestatījumi, lai inicializētu klasi. Piemēram:

Šajā gadījumā tev jānodrošina, ka tu visus kontroliera nosaukumus formatē ar maziem burtiem, lai izvairītos no turpmākām neskaidrībām. Tas palīdz ne tikai pārskatāmībai, bet arī ļauj tev saglabāt standartizācijas procesu savā lietojumprogrammā.
Sol 3: Izveido kontroliera eksemplāru
Tagad tu izveido kontroliera eksemplāru. Tas notiek tipiski ar virknēšanas formātu, kurā ietilpst pilns klases nosaukums – ieskaitot nosaukuma telpu. Piemēram:

Lai to viegli īstenotu tālākajā loģikā, pārbaudi, vai klase pastāv, pirms turpini ar nākamajiem soļiem. Šim nolūkam tu izmanto vienkāršu if-uzdevumu, kas pārbauda klases esamību.
Sol 4: Izņēmumu apstrāde trūkstošu kontrolleru gadījumā
Ja kontrolieris neeksistē, ir ieteicams izraisīt izņēmumu. Šajā gadījumā izmanto InvalidArgumentException, lai sniegtu lietotājam skaidru atgriezenisko saiti, ka norādītais kontrolieris ir nezināms:

Šajā gadījumā tu varētu piemēram izdot paziņojumu, piemēram:
Kontrolieris nezināms: [Kontroliera nosaukums]
Sol 5: Dalīti parametri kontroliera darbībai
Nākamajā solī ir jādefinē darbības un to metodes kontrolierim. Šajā piemērā mēs nosakām, ka ir metode ar nosaukumu save, kas ir atbildīga par augšupielādi. Šajā procesā tu noraksti PHP veikt šo metodi nedaudz kontrolierī. Tas notiek ar virknēšanas formātu, līdzīgi kā kontrolieriem:

Tādējādi tu nodrošini, ka ārējie izsaukumi tiek pieņemti tikai no autorizētām darbību metodēm.
Sol 6: Darbību metodes verifikācija ar Reflection
Lai nodrošinātu, ka norādītā metode pastāv, tagad tiek izmantota PHP Reflection. Tas notiek, instanciējot ReflectionClass.

Šajā solī tu pārbaudi ar metodi hasMethod, vai vēlamā darbību metode patiešām pastāv tavā kontrolierī:
Sol 7: Parametrs piekļuves loģikas īstenošana
Kad kontrolieri un darbība ir noteikti, ir pienācis laiks apstrādāt ienākošos parametrus. Šie parametri parasti parādās kā URL segments un ir jāizdara pāri. Tam tu izmanto funkciju explode():

Šajā solī tev jānodrošina, ka parametru skaits ir pāra skaitlis. Ja tas tā nav, ir novērojama nederīga parametru skaita, un arī šajā gadījumā tiek ieteikts izmantot InvalidArgumentException:
Sol 8: Asocitatīvā masīva izveide parametriem
Nākamajā solī tu pārvērsīsi parametrus asocitatīvā masīvā, lai tu varētu tos vienkārši nodot darbībai. To vari īstenot ar ciklu, kas koncentrējas uz katra atslēgas-vērtības pāra iekļaušanu:

Šajā procesā tu pārmaiņus pieņem atslēgas un vērtības, lai izveidotu attiecības, pirms nodod gala masīvu savam kontroliera metodei.
Sol 9: Kontroliera darbību izsaukšana
Tagad sākas praktiskā daļa: Tu esi gatavs izsaukt sava kontroliera metodi ar attiecīgajiem parametriem, kurus iepriekš esi definējis. Tāpēc tu instanciē kontrolieri un izsauc metodi šādā veidā:

Pārliecinies, ka beigās visi nepieciešamie soļi ir izpildīti pareizi. Tu tagad esi veiksmīgi īstenojis routing savā PHP lietojumprogrammā.
Kopsavilkums
Šajā teksta rokasgrāmatā tu esi iemācījies, kā īstenot rutingu, izmantojot kontrolierus un darbības objektorientētā PHP lietojumprogrammā. Sākot no direktoriju struktūras līdz kontrolieru definēšanai un pārbaudei, kā arī parametrus apstrādāt – viss tas ļauj izveidot jaudīgu rutinga sistēmu tavai web lietojumprogrammai.
Bieži uzdotie jautājumi
Kā es varu īstenot rutingu PHP?Rutings tiek organizēts, piesaistot URL kontrolieriem un to darbību metodēm.
Kas ir kontrolieri PHP?Kontrolieri ir klases, kas vada loģiku pieprasījumu apstrādei un izsauc attiecīgās darbību metodes.
Kā es varu pārliecināties, ka darbību metode pastāv?Izmanto PHP Reflection, lai pārbaudītu, vai metode atrodas attiecīgajā kontroliera klasē.
Kā es varu apstrādāt URL parametrus?Parametriem būtu jādodas pāros, un tos var pārvērst par asocitatīvu masīvu, izmantojot explode().
Ko darīt, ja mans kontrolieris neeksistē?Tev vajadzētu izmest atbilstošu izņēmumu, lai norādītu, ka kontrolieris ir nezināms.