Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Błędy i wyjątki
by_ikar
post
Post #1





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Hej, możliwe że tytuł tematu jest mylny, ale nie wiedziałem w gruncie jak mam opisać w kilku słowach swój problem.
Tak więc, przechodząc do meritum - od kilku dni piszę sobie swojego "CMS'a" na nowo. Nie jest to nic skomplikowanego, a musi być lekkie, dlatego nie użyłem żadnego framework'a typu kohana czy zend. Z tym że staram się wzorować na kohanie, nie wszystko oczywiście, ale cześć. Napisałem klasę odpowiedzialną za routing (router), z tą różnicą w porównaniu do kohany, że tam adres jest pobierany poprzez QUERY_STRING a u mnie REQUEST_URI. Mój problem polega na tym, że za bardzo nie wiem w jaki sposób, żeby to wyglądało elegancko, zainicjować działanie routera. Chodzi o to, żeby przy nie prawidłowym adresie, wyświetlić stronę błędu, a mi to niestety nie wychodzi (IMG:style_emoticons/default/biggrin.gif) wcześniej robiłem to tak, że sprawdzałem sobie (in_array) czy dany adres (po rozbiciu oczywiście) znajduje się w tablicy routings. W przypadku nie znalezienia redirect do strony błędu. Nie wiedziałem wcześniej że jest możliwość wyświetlenia poprzez (chyba) klasę Exception (chyba ponieważ z tej klasy dziedziczy Kohana_Exception). Próbowałem napisać jakąś własną obsługę wyjątków/błędów, ale niestety marnie mi to wychodzi. Więc jeżeli jest ktoś, kto ogarnął to co napisałem w chaotyczny sposób, i byłby w stanie mi wytłumaczyć jak mam się za to za brać, to byłbym wdzięczny (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


  1. <?php
  2.  
  3. class Dispatcher {
  4.  
  5.  
  6. private $errors = array();
  7.  
  8.  
  9. public function Exec(Router $router) {
  10.  
  11. if(file_exists($router -> cfg -> PathControllers.$router -> getController().'.php')) {
  12.  
  13. require_once($router -> cfg -> PathControllers.$router -> getController().'.php');
  14.  
  15. $AppController = $router -> getController();
  16. $AppAction = $router -> getAction();
  17.  
  18. $obj = new $AppController();
  19. $obj -> $AppAction();
  20.  
  21. }
  22.  
  23. else {
  24.  
  25. Controller::Error(404);
  26.  
  27. }
  28.  
  29. }
  30.  
  31. }
  32.  
  33. ?>

Gdzie metoda statyczna Error() z klasy Controller zwraca blad tak:
  1. public static function Error($error) {
  2.  
  3. if(file_exists('views/'.$error.'.php')) {
  4.  
  5. if($error == 404) {
  6.  
  7. die(file_get_contents('views/'.$error.'.php'));
  8.  
  9. }
  10.  
  11. else {
  12.  
  13. die(file_get_contents('views/'.$error.'.php'));
  14.  
  15. }
  16.  
  17. }
  18.  
  19. }
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: 4.10.2025 - 08:26