Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Klasa odpowiadająca za dynamiczne linki
marcinek37
post 22.05.2014, 22:12:32
Post #1





Grupa: Zarejestrowani
Postów: 239
Pomógł: 0
Dołączył: 2.06.2011

Ostrzeżenie: (0%)
-----


Przyjazne linki można tworzyć za każdym razem ręcznie, np.
  1. <?php
  2. ...
  3. echo'<a href="strony/'.$title.'-'.$id.'/">zobacz więcej</a>';
  4. ...
  5. ?>


Jednak w przypadku, gdy sytuacja wymusza na nas zmianę struktury linka na np. materialy/tytul-10/, trzeba będzie dokonywać zmian w wielu miejscach. Im większa strona, tym więcej roboty.

Dlatego wziąłem się za pisanie klasy, która może pomóc rozwiązać ten problem. Uruchamia się ją w ten sposób:
  1. <?php
  2. ...
  3. echo'<a href="'.Seo::link('index.php?m=info&id=10&title=tytul').'">zobacz więcej</a>';
  4. ...
  5. ?>


m - nazwa kontolera
id - informuje, jaki materiał załadować
title - zmienna wyłącznie do pozycjonowania

Klasa wygląda tak:
  1. <?php
  2. class Seo{
  3.  
  4. public static function link($link_to_convert){
  5. $link = str_replace('index.php?', '', $link_to_convert);
  6. foreach(explode('&', $link) AS $var){
  7. $parts = explode('=', $var);
  8. if($parts[0] == 'm'){ $method = $parts[1]; }
  9. else{ $vars[$parts[0]] = $parts[1]; }
  10. }
  11. if(method_exists('Seo', $method)){ return self::info($vars); }
  12. else{ return $link_to_convert; }
  13. }
  14.  
  15.  
  16. public static function info($vars){
  17. if($vars['id'] && $vars['title']){ $link = '/strona/'.$vars['title'].'-'.$vars['id'].'/'; }
  18. else{ $link = '/'; }
  19. return $link;
  20. }
  21.  
  22.  
  23. }
  24. ?>


Każdy link w tworzonym przeze mnie Frameworku będzie mieć strukturę index.php?m=MODUŁ + [cała reszta zmiennych związana z modułem].
Dlatego na początku w metodzie "link" ze zmiennej $link kasowany jest ciąg "index.php?". Następnie cała reszta dzielona jest na zmienne, z czego zmienna $m jest szczególna, bo informuje, jaką metodę ma uruchomić - o ile istnieje.

Następnie metoda ta jest uruchamiana i generuje ładny link - o ile to metody trafią porządane zmienne.
Na razie jest tylko jedna metoda "info", ale w przyszłości dojdą kolejne.

Co sądzicie o takim rozwiązaniu?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 17:18