Rutarea pe site folosind php

Să vorbim despre utilitatea interesantă, care mai devreme sau mai târziu va fi utilă oricărui dezvoltator web.

Să începem cu rutarea (eng. "Routing" - rutare). Imediat se pune întrebarea, de ce avem nevoie de rutare pe site, dacă totul a funcționat bine înainte și a fost mulțumit de ea? E simplu. Dacă doriți să obțineți un sistem mai flexibil și să reduceți timpul pentru setarea / reconfigurarea site-ului, atunci aveți nevoie de rutare. În plus, gestionarea centralizată a site-ului va simplifica lucrul cu codul.







Când eu am folosit router-ul obișnuit de comutare și am crezut că este convenabil (de fapt, chiar și această rutare este mult mai bună decât absența acesteia).

Toate acestea au fost pe vechiul php funcțional chiar și fără nici un indiciu al OOP. Acest tip de sistem nu era foarte flexibil, deoarece au existat dificultăți în transmiterea datelor în module, codul a fost foarte greoi, deoarece am avut de a păstra logica împreună cu rutarea și apoi mi-a dat seama - de ce nu facem următoarele:

  • 1) rutare fără cod pentru a pune un fișier separat (acest lucru vă va permite să editați liber fișierul direct prin panoul de administrare)
  • 2) plasați separat logica într-o clasă care ar genera conținut pentru pagini

În acest articol, mulți nu vor găsi nici o noutate, dar eu nu încerc să introduc inovația, vreau doar să-mi deschid ochii celor care încă mai dorm și folosesc metode mai puțin convenabile :)

Determinat "de ce?", Să trecem la "cum?".

Primul pas pe care trebuie să-l facem pentru a crea o rutare convenabilă și practică este să scrieți codul următor. htaccess:

Acest cod va redirecționa toate paginile la index. php, care ne va permite să simplificăm gestionarea conținutului. Pentru a crește înțelegerea, vă sfătuiesc să acordați atenție articolului DarkKemper`a

Acum, când avem redirecționarea, vom trece la crearea fișierului router. Eu folosesc formatul xml, dar acest lucru nu este deosebit de important, principalul lucru care ar fi convenabil pentru tine.

  • packageName1. Nume_clasă / Metodă
  • packageName2. Nume_clasă / Metodă
  • packageName3. Nume_clasă / Metodă






Totul este destul de simplu: în fișierul ruterului puteți specifica setările atât pentru adresele URL individuale, cât și pentru toate părțile statice ale paginilor. În exemplul am specificat modulele pentru antetul site-ului, deoarece nu se schimbă pentru mine. Rețineți că, în plus față de module, puteți specifica setările, orice parametri depășiți, reguli ... În general, orice.

Ultimul și cel mai important pas este de a scrie clasa Router, care va gestiona toate rutele.

În primul rând, trebuie să analizăm fișierul xml:

  • funcția statică privată parse ($ configPath)
  • retur simplexml_load_file ($ configPath);
  • >

Metoda parse () primește calea către configurația dvs. (îl puteți folosi nu numai pentru rutare) și returnează un obiect SimpleXML.

Acum puteți accesa oricare dintre setări după cum urmează: $ xml-> header-> modules ...

  • funcția publică statică GetContent ($ configPath)
  • $ content = '';
  • $ router = auto :: parse ($ configPath);
  • foreach ($ router ca pagină $)
  • dacă (preg_match (
  • '# ^'. $ pagina-> uri. '$ #'
  • . str_replace ($ _SERVER ['QUERY_STRING'], '', $ _SERVER ['REQUEST_URI']])
  • . $ uriParts
  • )
  • )
  • dacă modulele ($ empty- ($ page-> modules-> module))
  • foreach ($ page-> modules-> module ca modul $)
  • $ pageModules = $ modul;
  • // Modul :: Load () incarca pachetele de la .
  • $ conținut. = Modul :: Încărcare ($ module, $ uriParts [1]. $ UriParts [1]);
  • >
  • >
  • >
  • >
  • // în configurația mea am creat un grup "page404", care este procesat dacă nu sunt specificate pagini pentru această pagină
  • dacă (gol ($ pageModules))
  • foreach (modul $ router-> page404-> modules-> module ca modul $)
  • $ pageModules [] = $ modul;
  • $ conținut. = Modul :: Încărcare (modulul $);
  • >
  • >
  • returnați conținut $;
  • >

Deci, mai întâi, analizăm fișierul xml, apoi procesăm șirul de expresie regulat din ... .

Dacă găsim o potrivire cu adresa URL a paginii curente, atunci conectăm modulele specificate în ruterul de fișiere. Dacă nu o găsim, cele 404 de pagini sunt conectate.

Ei bine, asta e tot. Nu este nimic complicat aici.

Concluzii se pot face următoarele:

  • + Sistemul este foarte simplu,
  • + Este ușor și rapid să schimbați paginile și secțiunile dincolo de recunoaștere,
  • + Datorită expresiilor obișnuite, puteți conecta cu ușurință modulele (le putem transmite parametrii).
  • - Dacă ruterul de fișiere este mare, atunci este mai bine să nu lucrați fără caching.

Rutarea pe site folosind PHP

Când eu am folosit router-ul obișnuit de comutare și am crezut că este convenabil (de fapt, chiar și această rutare este mult mai bună decât absența acesteia).

Extensiile DOM în prototip

Cele mai multe extensii DOM sunt cuprinse în obiectul Element. Metode și sunt copiate suplimentar în obiectul Element pentru a fi ușor de utilizat.

Îmbunătățirea blogului cu jQuery

Luați în considerare această a treia parte a "simbioză a jQuery și WordPress".

JSR 292 Revizuirea votului

Această specificație este concepută pentru a rezolva problema limbilor cu tastare dinamică, cum ar fi PHP, Perl, Python, atunci când le implementează pe platforma Java (adică JVM).







Articole similare

Trimiteți-le prietenilor: