PHP-opetusohjelma - olioperustainen ohjelmointi: perusteet ja käytäntö

Reititys objektisuuntautuneessa PHP-verkkohallinnassa

Kaikki oppaan videot PHP-ohje: Olio-ohjelmointi perusteet ja käytäntö
Jan Brinkmann
Tekijä: Jan Brinkmann Päivitetty viimeksi Ohjelmisto: PHP 7

Olet haasteen edessä, Routing objektisuuntautuneessa PHP-sovelluksessa toteuttaaksesi sen oikein? Routing on keskeinen osa jokaista verkkosovellusta, koska se päättää, miten saapuvat URL-osoitteet liitetään sopiviin loogisiin komponentteihin, eli kontrolleriin ja niiden toimintoihin. Tämä opas auttaa sinua ymmärtämään ja toteuttamaan routingin PHP:ssä, käymällä läpi kontrollerien ja toimintojen liittämisen yksityiskohtaisesti.

PHP:lla toteutettu olioperustainen verkkosovellusohjelmointi – 9.05 Reititys: Kontrollerin ja toiminnon mäppäys

Video ladataan YouTubesta vasta toistettaessa – silloin tietoja (mm. IP-osoite) siirretään YouTubelle/Googlelle. Lisää tietosuojaselosteessa

Tärkeimmät havainnot

  • Routing mahdollistaa saapuvien URL-pyyntöjen liittämisen spesifisiin kontrolleri-metodeihin.
  • Kontrollerien ja metodien nimeämisessä noudatetaan tiettyjä nimeämiskäytäntöjä johdonmukaisuuden varmistamiseksi.
  • PHP Reflectionin avulla voidaan tarkistaa, onko tietty kontrolleri-metodi olemassa ennen sen kutsumista.
  • Parametrit on käsiteltävä huolellisesti ja aina toimitettava niihin liittyville metodeille assosiatiivisessa taulukossa.

Vaiheittainen opas

Vaihe 1: Hakemistorakenne ja nimiavaruus

Ensin luot uuden hakemiston nimeltä Controller, johon sijoitat kontrolleri-luokkasi. On tärkeää jakaa luokat järkeviin nimiavaruuksiin. Esimerkiksi:

Reititys objektisuuntautuneessa PHP-verkkosovelluksessa

Seuraavaksi määrität kontrollerille nimiavaruuden. Tämä voisi näyttää tältä:

namespace Controller;

Vaihe 2: Kontrolleriluokan määrittäminen

Tässä vaiheessa luot luokan haluamallesi kontrollerille. Nimetään se UploadControlleriksi. Tätä varten tarvitset joitain perusasetuksia luokan alustusprosessia varten. Esimerkiksi:

Reititys objektisuuntautuneessa PHP-verkkosovelluksessa

Varmista, että olet muotoillut kaikki kontrollerin nimet pienillä kirjaimilla, jotta vältät sekaannuksia myöhemmin. Tämä ei vain auta selkeyttämään koodia, vaan edesauttaa myös standardisointiprosessin ylläpitämistä sovelluksessasi.

Vaihe 3: Kontrolleri-instanssin luominen

Nyt luot instanssin kontrolleristasi. Tämä tapahtuu yleensä merkkijonomuotoilulla, joka kattaa koko luokan nimen – mukaan lukien nimiavaruuden. Esimerkiksi:

Reititys oliolähtöisessä PHP-verkkosovelluksessa

Jotta se voidaan toteuttaa helposti myöhemmässä logiikassa, tarkista ensin, onko luokka olemassa, ennen kuin jatkat lisävaiheisiin. Tähän käytät yksinkertaista if-lauseketta luokan olemassaolon varmistamiseksi.

Vaihe 4: Poikkeuksien käsittely puuttuvissa kontrollereissa

Jos kontrolleria ei ole olemassa, on suositeltavaa heittää poikkeus. Käytä tässä tapauksessa InvalidArgumentExceptionia antaaksesi käyttäjälle selkeää palautetta, että ilmoitettu kontrolleri on tuntematon:

Reititys objektisuuntautuneessa PHP-verkkosovelluksessa

Voisit esimerkiksi antaa ohjeen kuten:

Kontrolleri tuntematon: [Kontrollerin nimi]

Vaihe 5: Jaetut parametrit kontrolleri-toiminnolle

Seuraavassa vaiheessa on tarkoitus määrittää toimintojen ja niiden metodien nimet kontrollerille. Tässä esimerkissä määrittelemme, että on olemassa metodi nimeltä save, joka vastaa lataamisesta. Tällöin pyydät PHP:tä integroimaan tämän metodin kontrolleriin. Se tapahtuu merkkijonomuotoilun kautta, samalla tavalla kuin kontrollerien kohdalla:

Reititys objektisuuntautuneessa PHP-verkkohallinnassa

Näin varmistat, että ulkoiset kutsut hyväksytään vain valtuutetuista Action-metodeista.

Vaihe 6: Action-metodin tarkistaminen Reflectionin avulla

Varmistaaksesi, että ilmoitettu metodi on olemassa, käytetään nyt PHP:n Reflectionia. Tämä tapahtuu ReflectionClassin instansoinnin avulla.

Reititys objektisuuntautuneessa PHP-verkkokehityksessä

Tässä tarkistat hasMethod-metodilla, onko haluttu Action-metodi todella olemassa kontrollerissasi:

$reflection = new ReflectionClass($controllerClass);
if (!$reflection->hasMethod($actionName)) { throw new Exception("Toiminto '$actionName' ei ole olemassa kontrollerissa");
}

Vaihe 7: Parametrien käsittelylogiikan toteuttaminen

Kun kontrollerit ja toiminto on määritetty, on aika käsitellä saapuvat parametrit. Nämä parametrit esiintyvät tyypillisesti URL-segmenttinä ja on jaettava pareiksi. Tähän käytät explode()-funktiota:

Reititys objektisuuntautuneessa PHP-verkkokehityksessä

tässä vaiheessa sinun on myös varmistettava, että parametrien määrä on pariton. Jos näin ei ole, on epäkelpo määrä parametreja – myös täällä InvalidArgumentExceptionin heittäminen on suositeltavaa:

if (count($parameters) % 2!= 0) { throw new InvalidArgumentException("Epäkelpo parametrimäärä");
}

Vaihe 8: Assosiatiivisen taulukon luominen parametreille

Seuraavassa vaiheessa muutat parametrit assosiatiiviseksi taulukoksi, jotta voit helposti siirtää ne toiminnolle. Voit toteuttaa tämän silmukan avulla, joka voi kohdistaa jokaisen avain-arvo-parin:

Reititys objektikeskeisessä PHP-verkkosovelluksessa

Tässä otat vuorotellen avaimet ja arvot, jotta voit tehdä kohdistuksen ennen lopullisen taulukon siirtämistä kontrollerimetodillesi.

Vaihe 9: Kontrolleritoiminnon kutsuminen

Nyt päästään käytäntöön: Olet valmis kutsumaan kontrollerisi metodia vastaavilla parametreillä, jotka olit aiemmin määrittänyt. Tähän instansoit kontrollerin ja kutsut metodin seuraavasti:

$controllerInstance = new $controllerClass();
$controllerInstance->$actionMethod($paramsArray);
Reititys objektisuuntautuneessa PHP-verkkokehityksessä

Varmista lopuksi, että kaikki tarvittavat vaiheet on suoritettu oikein. Olet nyt onnistuneesti toteuttanut routingin PHP-sovelluksessasi.

Yhteenveto

Tässä tekstiohjeessa olet oppinut, kuinka voit toteuttaa routingin kontrollerien ja toimintojen avulla objektisuuntautuneessa PHP-sovelluksessa. Aloittaen hakemistorakenteesta kontrollerien ja niiden metodien määrittämiseen ja tarkistamiseen sekä parametrien käsittelyyn – kaikki tämä mahdollistaa tehokkaan routingin verkkosovelluksellesi.

Usein kysytyt kysymykset

Kuinka toteutan routingin PHP:ssä?Routing järjestetään URL-osoitteiden liittämisen avulla kontrolleriin ja niiden toimintoihin.

Mitkä ovat kontrollerit PHP:ssä?Kontrollerit ovat luokkia, jotka hallitsevat pyyntöjen käsittelyn logiikkaa ja kutsuvat vastaavat toimintometodit.

Kuinka voin varmistaa, että toimintometodi on olemassa?Käytä PHP Reflectionia tarkistaaksesi, onko metodi asianmukaisessa kontrolleriluokassa.

Kuinka käsittelen URL-parametreja?Parametrien tulisi esiintyä parillisesti ja ne voidaan muuttaa explode()-funktion avulla assosiatiiviseksi taulukoksi.

Entä jos kontrollerini ei ole olemassa?Sinun tulisi heittää vastaava poikkeus ilmoittaaksesi, että kontrolleri on tuntematon.

Jan Brinkmann
Kouluttaja Jan Brinkmann Verkkokehitys intohimolla! Jan on ollut kehittäjä yli 15 vuotta. Kaikki kurssit: Jan Brinkmann