Sa seisad silmitsi väljakutsega Routing objektorienteeritud PHP rakenduses vastavalt kujutada? Routing on iga veebirakenduse keskne komponent, kuna see otsustab, kuidas sisenevad URL-id sobivatele loogikamoodulitele, inglise keeles kontrollereile ja nende tegevustele, määratakse. See juhend aitab sul mõista ja ellu viia routing'u protsessi PHP-s, läbides üksikasjalikult kontrollereid ja tegevusi.

Olulised järeldused

  • Routing võimaldab sisenevate URL-päringute vastavust konkreetsetele kontrolleri meetoditele.
  • Kontrollerite ja meetodite nimetamine järgib teatud nimetamisreegleid, et tagada ühtekuuluvus.
  • PHP Reflection'i abil saab kontrollida, kas konkreetne kontrolleri meetod eksisteerib, enne kui seda kutsutakse.
  • Parameetreid tuleb hoolikalt töödelda ja edastada vastavatele meetoditele assotsiatiivses massiivis.

Juhend samm-sammult

Samm 1: Looge kataloogistruktuur ja nimemärgend

Esimese asjana loo uus kataloog nimega Controller, kuhu sa oma kontrolleri klassid paigutad. Oluline on jagada klassid mõistlike nimemärgistega. Näiteks:

Objektiliselt orienteeritud PHP veebiprogrammeerimise suunamine

Seejärel defineeri kontrolleri nimemärgend. See võiks välja näha järgmiselt:

namespace Controller;

Samm 2: Defineeri kontrolleri klass

Selles etapis loo klass soovitud kontrolleri jaoks. Nimetame selleks UploadController. Selleks vajad mõningaid põhiseadeid, et klass algselt seadistada. Näiteks:

Routing objektorienteeritud PHP-vebiprogrammeerimises

Pea meeles, et kõik kontrolleri nimed oleksid väikestes tähtedes, et vältida hilisemaid segadusi. See aitab mitte ainult arusaadavuses, vaid võimaldab sul ka hoida oma rakenduses standardimise protsessi.

Samm 3: Loo kontrolleri instants

Nüüd loo oma kontrolleri instants. See toimub tüüpiliselt stringi vormindamise kaudu, mis sisaldab klassi täielikku nime – koos nimemärgistega. Näiteks:

Routing objektoriente PHP veebiprogrammeerimises

Kuna sellele järgnevates loogikaetappides on oluline, kontrolli, kas klass eksisteerib, enne kui edasi liikuda. Selleks kasuta lihtsat if-lause, mis kontrollib klassi olemasolu.

Samm 4: Erandi käsitlemine puuduvate kontrollereid

Kui kontrollereid ei eksisteeri, on soovitatav tekitada erand. Sel juhul kasuta InvalidArgumentException'i, et anda kasutajale selge tagasiside, et antud kontrollereid on tundmatu:

Routing objektoriente PHP veebiprogrammeerimises

Sel juhul võiksid näiteks kuvada teadet nagu:

Kontroller tundmatu: [Kontrolleri-nimi]

Samm 5: Jagatud parameetrid kontrolleri tegevuse jaoks

Järgmises etapis tuleb määrata tegevused ja nende meetodid kontrolleri jaoks. Antud näites määrame, et meil on meetod nimega save, mis vastutab üleslaadimise eest. Samuti seadista PHP-d, et see meetod veidi kontrolleri integreeriks. See toimub stringi vormindamise kaudu, sarnaselt kontrollereidega:

Roteerimine objektorienteeritud PHP-veebiprogrammeerimises

Nii tagad, et välistest kõnedest aktsepteeritakse ainult autoriseeritud tegevusmeetodeid.

Samm 6: Tegevusmeetodi verifitseerimine Reflection'i abil

Veenduge, et antud meetod eksisteerib, kasutades nüüd PHP Reflection'it. See toimub ReflectionClass'i instantsi loomise kaudu.

Routing objektoriente PHP veebiprogrammeerimises

Siin kontrollid metodiga hasMethod, kas soovitud tegevusmeetod tegelikult sinu kontrolleris eksisteerib:

$reflection = new ReflectionClass($controllerClass);
if (!$reflection->hasMethod($actionName)) { throw new Exception("Tegevus '$actionName' ei eksisteeri kontrolleris");
}

Samm 7: Parameetrite ligipääsuloogika rakendamine

Pärast kontrollereid ja tegevust on aeg töödelda sisenevaid parameetreid. Need parameetrid esinevad tavaliselt URL-segmentide kujul ja need tuleb paarideks jagada. Selleks kasuta funktsiooni explode():

Objektoriente PHP veebiprogrammeerimise suunamine

Selles etapis pead samuti veenduma, et parameetrite arv on paaris. Kui see ei ole nii, on parameetrite arv vale – ka siin soovitatakse InvalidArgumentException'i:

if (count($parameters) % 2!= 0) { throw new InvalidArgumentException("Vale parameetrite arv");
}

Samm 8: Assotsiatiivsete massiivide loomine parameetrite jaoks

Järgmises etapis muuda parameetrid assotsiatiivseks massiiviks, et jõuaksite neid lihtsalt tegevusele edastada. Seda saab teha tsükli kaudu, mis suudab sihikindlalt iga võtme-väärtuse paari seostada:

Objektiorienteeritud PHP-veebiprogrammeerimise marsruutimine

Siin kogud vaheldumisi võtmed ja väärtused, et teostada seos, enne kui edastad lõpliku massiivi oma kontrolleri meetodile.

Samm 9: Kutsu kontrolleri tegevus

Nüüd tuleb praktiline osa: oled valmis kutsuma oma kontrolleri meetodit vastavate parameetritega, mille sa varem määrasid. Selleks instantsi oma kontrolleri ja kutsu meetod järgmiselt:

$controllerInstance = new $controllerClass();
$controllerInstance->$actionMethod($paramsArray);
Routing objektorientes PHP veebiprogrammeerimises

Veendu, et lõpuks on kõik vajalikud sammud õigesti täidetud. Oled nüüd edukalt rakendanud routing'u oma PHP rakenduses.

Kokkuvõte

Selles tekstijuhendis oled õppinud, kuidas rakendada routing'ut kontrollereid ja tegevusi kasutades objektorienteeritud PHP rakenduses. Alates kataloogistruktuurist, kontrollereid ja nende meetodeid defineerimisest ja kontrollimisest kuni parameetrite käsitlemiseni – kõik see võimaldab sul luua võimsa routing süsteemi oma veebirakendusele.

Korduma kippuvad küsimused

1. Kuidas rakendada routing'ut PHP-s?Routing korraldatakse URL-de ja nende tegevusmeetodite seose kaudu.

2. Mis on PHP kontrollereid?Kontrollerid on klassid, mis juhivad päringute töötlemise loogikat ja kutsuvad vastavad tegevusmeetodid.

3. Kuidas ma saan veenduda, et tegevusmeetod eksisteerib?Kasutage PHP Reflection'it, et kontrollida, kas meetod on vastavas kontrolleri klassis olemas.

4. Kuidas töödelda URL-parameetreid?Parameetrid peaksid ilmuma paarides ja neid saab explode() abil muuta assotsiatiivseks massiiviks.

5. Mis juhtub, kui mu kontroller ei eksisteeri?Sa peaksid viskama vastava erandi, et näidata, et kontroller on tundmatu.