Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ocena klasy router
Wazniak96
post
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


Witam,

od pewnego czasu kojarzę, że tak powiem OOP(znam mniej więcej zasady). Ostatnio postanowiłem napisać coś od podstaw, wybór padł na prostego frameworka.
I tutaj pojawia się ten problem, że tworzę go raczej w formie edukacyjnych i potrzebuję opinii kogoś znającego się na rzeczy, czy idę w dobrą stronę smile.gif

Poniżej podaję kod klasy router, mającej zająć się otworzeniem odpowiedniej klasy oraz wywołania podanej metody.

  1. <?php
  2.  
  3. class Router{
  4.  
  5. private $cotroller;
  6. private $method = 'index';
  7. private $directory;
  8.  
  9. public function __construct()
  10. {
  11. $this->directory = APPPATH . '/controllers/';
  12. require(APPPATH.'/config/config.php');
  13. $this->setController($config['base_controller']);
  14. $this->readData();
  15. $this->run();
  16. }
  17.  
  18. public function setController($controller)
  19. {
  20. $this->controller = ucfirst(str_replace(array('/', '.'), '', $controller));
  21. }
  22.  
  23. public function setMethod($method)
  24. {
  25. $this->method = str_replace(array('/', '.'), '', $method);
  26. }
  27.  
  28. public function readData()
  29. {
  30. $uri = explode('/', $_GET['uri']);
  31. if(isset($uri[0]) && !empty($uri[0]))
  32. $this->setController($uri[0]);
  33.  
  34. if(isset($uri[1]) && !empty($uri[1]))
  35. $this->setMethod($uri[1]);
  36.  
  37. for($i=2; $i<12; $i++)
  38. {
  39. if(isset($uri[$i]) && !empty($uri[$i]))
  40. $data[] = $uri[$i];
  41. }
  42.  
  43. return $data;
  44. }
  45.  
  46. private function run()
  47. {
  48. if(!file_exists($this->directory . strtolower($this->controller) . '.php'))
  49. exit('Środowisko aplikacji nie zostało zainstalowane poprawnie.');
  50. else
  51. {
  52. require($this->directory . strtolower($this->controller) . '.php');
  53.  
  54. $method = $this->method;
  55. $class = new $this->controller;
  56. $class->$method();
  57. }
  58. }
  59. }


Wszelka krytyka mile widziana snitch.gif

PS: Brakuje jeszcze sprawdzenia czy podana metoda istniej, a w innym wypadku przekierowanie, ale postanowiłem zrobić to trochę później, kiedy ogólnie zajmę się błędami.

Ten post edytował Wazniak96 21.06.2013, 20:22:41
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 Aktualny czas: 19.08.2025 - 10:53