Rutarea pe Web în php cu r

Toată lumea este interesată de compatibilitatea adreselor URL SEO, REST. Apache poate face URL-uri de rutare folosind regula mod_rewrite. dar este foarte dificil și plin de greșeli. De ce nu folosiți PHP care în sine gestionează rutarea, nu?







Cerințe și instalare

Aura.Router necesită PHP versiunea 5.4 +. Puteți să o instalați în mai multe moduri:

  1. Descarcă ca minge de gudron sau ZIP cu GitHub.
  2. Dacă utilizați Git, descărcați-l din linia de comandă cu:

Odată ce ați descărcat Aura.Router, veți vedea un director cu structura de fișier de mai jos:

Toate fișierele sursă sunt în directorul src. și de acolo urmează PSR-0 Standard pentru autoloading. Toate testele unităților sunt situate în directorul de teste. puteți rula testele făcând referire la PHPUnit în directorul de teste (asigurați-vă că ați instalat PHPUnit).

Lucrul cu Aura.Router

Setul minim de reguli mod_rewrite trebuie scris în. htaccess specifică cererile primite la un punct de intrare.

Regulile de validare de mai sus pentru fișierele și directoarele existente și specificați toate celelalte interogări la index.php.

Sau, dacă utilizați PHP construit într-un server, puteți rula ceva de genul:

Aura.Router conține patru fișiere în directorul router src / Aura / Router: Map.php. Route.php. RouteFactory.php și Exception.php. RouteFactory este o fabrică de clasă pentru a crea un nou obiect Route. RouteFactory conține metoda newInstance (). care are o matrice asociativă. Valorile sunt transmise constructorului clasei Rută.

Un obiect Traseu este un traseu individual cu nume, cale, parametri, valori etc. Nu trebuie să utilizați direct o instanță de rută, în loc să utilizați o RouteFactory sau hărți.

Route și RouteFactory acceptă o matrice asociativă cu următoarele taste:

  • numele este șirul care este numele traseului.
  • calea este șirul care reprezintă calea pentru acest traseu cu substituenții parametrului de marcare.
  • params - o matrice cu parametri care afișează markerii subpatternului regulat.
  • valori - o serie de valori implicite pentru parametri, dacă nu sunt găsiți.
  • metoda - acest șir sau o serie de metode HTTP, serverul REQUEST_METHOD trebuie să se potrivească cu una dintre aceste valori.
  • sigur - dacă serverul ar trebui să utilizeze solicitarea HTTPS.
  • routable - dacă este adevărat, acest traseu poate fi negociat și, dacă nu, atunci îl puteți folosi numai pentru a crea o cale.
  • is_match - funcția numită pentru a evalua traseul.
  • generate - funcția numită pentru a crea o cale.
  • name_prefix este șirul de prefix pentru nume.
  • path_prefix este șirul de prefix al căii.

Nu vă faceți griji prea mult despre metoda params. Mai jos sunt câteva exemple.

O hartă a clasei de colectare a punctului URI al rutelor. Constructorul hărții ia o RouteFactory și rutele dvs. într-un grup de grup de atașament. Aceasta vă permite să separați configurația și construcția rutelor (ruta).







Puteți adăuga rute individuale pentru obiectul Map prin metoda add (). sau atașați un număr de rute folosind metoda attach (). Indiferent de modul pe care îl adăugați la traseu, traseul stochează toate caracteristicile din harta proprietăților definițiilor, care este o matrice.

Noțiuni de bază privind utilizarea

Cel mai simplu mod de a crea o instanță a unei obiecte este să aveți fișierul instance.php localizat în directorul de scripturi.

În plus, puteți crea un obiect manual, exact ceea ce face scenariul instance.php în orice caz.

Apoi, trebuie să adăugați rute către obiect folosind metoda proprie ().

Metoda add () ia numele traseului, al traseului și al matricei asociative. După cum am menționat anterior, valorile conțin valorile implicite în parametrii matricei. Astfel, în exemplul rutei "citire", puteți vedea formatul implicit întotdeauna "HTML" dacă nu este specificat.

Vă întrebați de ce ar trebui să folosim formatul implicit? Pentru aplicațiile REST, controlerul și acțiunea vor fi aceleași. Datele sunt diferite de formatul acceptat. Deci nu trebuie să repetăm ​​același cod de la o acțiune la alta. Luați în considerare, de exemplu, un URI:

Datele necesare pentru a ieși pentru fiecare, dar în diferite formate, cum ar fi JSON, HTML și atom. Deci, dacă nu apare niciunul dintre formate, de exemplu:

Apoi va prelua cererea pentru HTML.

Pentru un real API REST, extensia de fișier nu ar trebui să fie utilizată pentru a specifica formatul necesar. Clienții ar trebui să fie încurajați să utilizeze cererea de antet HTTP.

Alinierea rutei

După rutele care au fost adăugate, doriți să știți care dintre rute a fost solicitat de utilizator. Acest lucru este posibil folosind metoda match () a obiectului. În interiorul hărții obiectului, apelați metoda IsMatch () a obiectului Rută. În spatele metodei de potrivire (). trebuie să parcurgeți calea și valorile $ _SERVER după cum urmează:

Poate că vă întrebați de ce trebuie să mergem pe cale, precum și pe valoarea serverului. De ce nu poți obține Aura. Scoateți calea de ieșire din matricea $ _SERVER pe care ați trecut-o? Aceasta este pentru o anumită flexibilitate.

Dacă se găsește o potrivire, metoda returnează o instanță a obiectului Traseu. în caz contrar, se întoarce fals. După ce ați primit obiectul, la care puteți accesa valorile sale ca atare:

Aceasta este de la valoarea $ rută-> valori, știm ce fel de randare, ce clasă, ce metodă dorim să apelăm pentru expediere.

Planificarea rutei

Dacă ruta nu este găsită, puteți crea cu ușurință un obiect de controler din metoda corespunzătoare. Acest exemplu simplu este preluat din documentația Aura:

Micro-Routing

Uneori puteți folosi Aura ca microstructură. De asemenea, este posibil să se atribuie o funcție anonimă a controlerului:

Când utilizați Aura.Router ca microstructură, dispecerul va arăta ca exemplul de mai jos:

Crearea unei rute

Puteți crea un traseu în opinia dvs. Acest lucru este posibil prin utilizarea metodei generate () în interiorul metodei, care apelează metoda generate () a obiectului Router.

În scurt tastând "blog / read / 42.atom". dar greu, căile sunt mai puțin flexibile și traseul este mai greu de schimbat. Luați în considerare următorul exemplu:

Ce se întâmplă atunci când doriți să modificați / blog / citiți / 42.atom la / article / view / 42.atom. Sau ce se întâmplă atunci când un client dorește să meargă la un site multilingv? Dacă aveți căi codate greu, este posibil să trebuiască să le schimbați în multe locuri. Metoda generate () vine întotdeauna la îndemână.

Al doilea argument pentru metoda add () este o matrice asociativă. Puteți trece funcțiile apelate de la tastele is_match. care pot reveni fie la adevărat, fie la fals. Și în funcție de valoare, în cazul în care returnează rute atunci când metoda match (). De exemplu:

Dacă HTTP_REFERER este example.com, nu vom putea descărca conținutul. Puteți transfera propriile funcții numite, ca mai sus. Acest lucru face ca Aura.Router să fie mai flexibil.

concluzie

În acest articol, am examinat câteva dintre caracteristicile de bază și avansate ale utilizării Aura.Router pentru rutarea web.

Șablonul Zakzat pentru Amiro CMS pe Internet.
- - - - - - - - - - - - - - -







Trimiteți-le prietenilor: