Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Router - Programowanie Obiektowe w PHP5 (H. Hayder)
Forum PHP.pl > Forum > Przedszkole
olechafm
Oto kod routera z przykładu w książce wymienionej w tytule:

  1.  
  2. <?
  3. class router
  4. {
  5. private $route;
  6. private $controller;
  7. private $action;
  8. private $params;
  9. public function __construct()
  10. {
  11. if(file_exists("app/config/routes.php"))
  12. {
  13. require_once("app/config/routes.php");
  14. }
  15. $path = array_keys($_GET);
  16. $config = loader::load("config");
  17. if (!isset($path[0]))
  18. {
  19. $default_controller = $config->default_controller;
  20. if (!empty($default_controller))
  21. $path[0] = $default_controller;
  22. else
  23. $path[0] = "index";
  24. }
  25. $route= $path[0];
  26. $sanitzing_pattern = $config->allowed_url_chars;
  27. $route = preg_replace($sanitzing_pattern, "", $route);
  28. $route = str_replace("^","",$route);
  29. $this->route = $route;
  30. $routeParts = split( "/",$route);
  31. $this->controller=$routeParts[0];
  32. $this->action=isset($routeParts[1])? $routeParts[1]:"base";
  33. array_shift($routeParts);
  34. array_shift($routeParts);
  35. $this->params=$routeParts;
  36. /* Dopasowanie wzorca routingu zdefiniowanego przez użytkownika. */
  37. if (isset($routes)){
  38. foreach ($routes as $_route)
  39. {
  40. $_pattern = "~{$_route[0]}~";
  41. $_destination = $_route[1];
  42. if (preg_match($_pattern,$route))
  43. {
  44. $newrouteparts = split("/",$_destination);
  45. $this->controller = $newrouteparts[0];
  46. $this->action = $newrouteparts[1];
  47. }
  48. }
  49. }
  50. }
  51. public function getAction()
  52. {
  53. if (empty($this->action)) $this->action="main";
  54. return $this->action;
  55. }
  56. public function getController()
  57. {
  58. return $this->controller;
  59. }
  60. public function getParams()
  61. {
  62. return $this->params;
  63. }
  64. }
  65. ?>
  66.  



W jaki sposób obiekt routera pobiera w tym przypadku adres URL do obróbki i czy dyrektywa array_shift jest w dobrym miejscu?
dziamber
Adres url pobiera w linii 15
wookieb
O nie, jak widzę takie gówniane kody jak ten, to sam mam ochotę wydać książkę...
olechafm


Jeśli ktoś kiedykolwiek będzie chciał nabyć ten tytuł "Hasin Hayder - Programowanie obiektowe w PHP5" to niech sobie odpuści i poszuka czegoś innego bo to tragedia nie książka... dawno nie wyrwałem sobie tylu siwych włosów, pomimo wielu opinii, że to jeden z lepszych tytułów, teraz po przebrnięciu przez to bagno stwierdzam, że nawet niska cena (37zł helion) nie jest w stanie tego usprawiedliwić...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.