Tu esi akistatyje su iššūkiu, Routing objektiškai orientuotoje PHP programoje atitinkamai atvaizduoti? Routing yra centrinė kiekvienos Webanwendung dalis, nes jis nusprendžia, kaip įeinančios URL atitinka tinkamus logikos blokelius, kitaip tariant, kontrolerius ir jų veiksmus. Šis vadovas padės tau suprasti ir įgyvendinti Routing procesą PHP, peržiūrint kontrolerių ir veiksmų priskyrimą išsamiai.
Svarbiausi įžvalgos
- Routing leidžia priskirti įeinančius URL užklausas specifinėms kontrolerio metodams.
- Kontrolerių ir metodų pavadinimai atitinka tam tikras pavadinimų konvencijas, kad užtikrintų nuoseklumą.
- Su PHP Reflection galima patikrinti, ar specifinė kontrolerio metodas egzistuoja, prieš ją kviečiant.
- Parametrai turi būti kruopščiai apdoroti ir perduoti atitinkamoms metodams asociatyviame masyve.
Žingsnis po žingsnio vadovas
Žingsnis 1: Sukurkite katalogo struktūrą ir vardų sritį
Visų pirma, sukurkite naują katalogą pavadinimu Controller, kuriame laikysite savo kontrolerio klases. Šiuo atveju svarbu, kad klasės būtų patalpintos į prasmingas vardų sritis. Pavyzdžiui:

Toliau turite apibrėžti vardų sritį kontroleriui. Tai gali atrodyti taip:
Žingsnis 2: Apibrėžkite kontrolerio klasę
Šiame žingsnyje sukursite klasę savo pageidaujamam kontroleriui. Pavadinkime ją UploadController. Tam reikės kelių pagrindinių nustatymų, kad klasių inicializuoti. Pavyzdžiui:

Šiuo atveju turėtumėte užtikrinti, kad visi kontrolerių pavadinimai būtų formuoti mažosiomis raidėmis, kad būtų išvengta vėlesnių painiavos. Tai ne tik padeda organizuoti, bet ir leidžia išlaikyti standartizavimo procesą savo programoje.
Žingsnis 3: Sukurkite kontrolerio instanciją
Dabar sukurkite savo kontrolerio instanciją. Tai paprastai vyksta per String formatavimą, kuris apima pilną klasės pavadinimą – junto vardų sritį. Pavyzdžiui:

Norint, kad tai būtų lengviau įgyvendinti vėlesnėje logikoje, patikrinkite, ar klasė egzistuoja, prieš eidami toliau. Tam naudojate paprastą if klausimą, kad patvirtintumėte klasės egzistavimą.
Žingsnis 4: Išimtis, kai trūksta kontrolerių
Jei kontroleris neegzistuoja, geriausia sukelti išimtį. Šiuo atveju naudokite InvalidArgumentException, kad vartotojui būtų pateikta aiški informacija, kad nurodytas kontroleris yra nežinomas:

Čia galėtumėte pateikti, pavyzdžiui, tokį pranešimą:
Kontroleris nežinomas: [Kontrolerio-pavadinimas]
Žingsnis 5: Pasikartojantys parametrai kontrolerio veiksmui
Kitame žingsnyje kalbama apie tai, kaip apibrėžti veiksmus ir jų metodus kontroleriui. Šiame pavyzdyje nustatome, kad yra metodas pavadinimu save, kuris yra atsakingas už įkėlimą. Tam jūs nurodysite PHP, kad ši metodą šiek tiek integruotų į kontrolerį. Tai vyksta per String formatavimą, panašiai kaip su kontroleriais:

Taip užtikrinate, kad išoriniai kvietimai būtų priimami tik iš įgaliotų veiksmų metodų.
Žingsnis 6: Veiksmų metodų tikrinimas per Reflection
Norint užtikrinti, kad nurodytas metodas egzistuoja, dabar naudojama PHP’s Reflection. Tai vyksta per ReflectionClass instanciją.

Čia tikrinate su hasMethod metodu, ar pageidaujama veiksmo metodas tikrai egzistuoja jūsų kontroleryje:
Žingsnis 7: Parametrų prieigos logika įgyvendinkite
Po to, kai nustatyti kontroleriai ir veiksmai, atėjo laikas apdoroti įeinančius parametrus. Šie parametrai paprastai pasirodo URL segmento pavidalu ir turi būti padalinti į poras. Tam naudosite explode() funkciją:

Šiame žingsnyje taip pat turite užtikrinti, kad parametrų skaičius būtų lygus. Jei taip nėra, parametrų skaičius yra netinkamas – tokiu atveju vėl rekomenduojama naudoti InvalidArgumentException:
Žingsnis 8: Sukurkite asociatyvų masyvą parametrams
Kitame žingsnyje paverskite parametrus asociatyviu masyvu, kad galėtumėte juos lengvai perduoti veiksmui. Tai galite įgyvendinti per ciklą, kuris tiksliai priskiria kiekvieną raktą ir reikšmę:

Šiuo atveju paimkite pakaitomis raktus ir reikšmes, kad atliktumėte priskyrimus, prieš perduodami galutinį masyvą savo kontrolerio metodui.
Žingsnis 9: Kviečiamas kontrolerio veiksmas
Dabar tapo praktiška: esate pasiruošę kviečiant kontrolerio metodą su atitinkamais parametrais, kuriuos anksčiau apibrėžėte. Tam instancijuojate kontrolerį ir kviečiate metodą taip:

Įsitikinkite, kad pabaigoje visos būtinos procedūros buvo tinkamai atliktos. Dabar sėkmingai įgyvendinote routing savo PHP programoje.
Santrauka
Šiame tekstiniame vadove išmokote, kaip įgyvendinti routing per kontrolerius ir veiksmus objektiškai orientuotoje PHP programoje. Pradedant nuo katalogų struktūros iki kontrolerių ir jų metodų apibrėžimo ir tikrinimo bei parametrų tvarkymo – visa tai suteikia jums galingą routing sistemą jūsų web programai.
Dažnai užduodami klausimai
Kaip įgyvendinti routing PHP?Routing organizuojamas priskiriant URL kontroleriams ir jų veiksmų metodams.
Kas yra kontroleriai PHP?Kontroleriai yra klasės, kurios valdo logiką, kaip apdoroti užklausas ir kviečia atitinkamus veiksmų metodus.
Kaip galiu užtikrinti, kad veiksmo metodas egzistuoja?Naudokite PHP Reflection, kad patikrintumėte, ar metodas yra atitinkamoje kontrolerio klasėje.
Kaip apdoroti URL parametrus?Parametrai turėtų pasirodyti lyginiais poromis ir gali būti paversti į asociatyvų masyvą naudojant explode().
Kas nutiks, jei mano kontroleris neegzistuoja?Turėtumėte išmesti atitinkamą išimtį, kad parodytumėte, kad kontroleris nežinomas.