Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] router na przykładzie apple.com, tsntan cardiff
-Zxcy-
post
Post #1





Goście







Czy ktoś może orientuje się jak jest zaprogramowany ruter witryny apple.com?

Domyślam się że wszytko idzie przez index.php, sprawdza czy pierwsze 2 znaki, to nie język w URI i właśnie co dalej... Jak działa ten mechanizm że kontroler wie iż /macos/ to osobna strona, a później /macos/safari/ to jej podstrona?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




No przecież wspomniałem jak można to zrobić. Masz dwa wyjścia. O jednym wspomniałes czyli po odczycie z routera kategorii, sprawdzasz jej istnienie w bazie i ewentualnych dzieci. Ale jest to tak częsta akcja, że powinieneś to odpuścić bo zajedziesz bazę. Dlatego zapisz sobie strukturę kategorii w cache serwera iodwołuj do niego. Znacznie szybsze rozwiązanie. Przykład?
  1. $kategorie = array (
  2. 'macosx' => array(
  3. 'name' => 'Mac OSX',
  4. 'children' => array(
  5. 'safari' => array(
  6. 'name' => 'Safari',
  7. 'children' => array()
  8. )
  9. 'lion' => array(
  10. 'name' => 'Lion version',
  11. 'children' => array()
  12. )
  13. )
  14. ),
  15. );
Czemu taka choćby? Bo łatwo po niej sie "idzie" z powodu rekurencji. Każda nazwa będąca jako kategoria jest kluczem tablicy (czyli nazwą seo-friendly, widoczną z poziomu url). Posiadać ona może kilka własności takich jak pełna nazwa (name) i tablicę dzieci (moja ma znacznie więcej, ale te dwie to raczej minimum). Teraz sprawdzenie wygląda banalnie. Albo idziemy od roota, albo od najdalszego liścia:
isset($kategorie['level-1']['children']['level-2']) i jeśli nie ma to odrzucamy ostatni poziom i children jako błędne. Ja mam dla przykładu to rozwiązane tak, że zaczynam od roota i przy starcie cache się sprawdza czy tę strukturę posiada. Jeśli tak - używa, jeśli nie generuje i wrzuca do cache'u. Jakakolwiek modyfikacja struktury (dodanie, aktualizacja, usunięcie lub przeniesienie węzła czy węzłów) usuwa bieżącą strukturę z cache. Proste, skuteczne, wydajne.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.12.2025 - 01:55