Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SWITCH] operator ||
TheArt
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 20.09.2007

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


Czy prawidłowym jest zapis

  1. case 'oferta' || 'produkty' || 'sklepy' :
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




TheArt.. Wookieb Ci już napisał :/
użyj
  1. case "jedna":
  2. case "druga":
  3. case "trzecia:"
  4. //tu instrukcje;
  5. break;
Switch działa tak, że wykonuje instrukcje do czasu aż napotka break. Jeśli go nie napotka to wykonuje wszystko dalej, nawet jeśli to następny case. Tak więc jeśli nie trafi na żaden z trzech to pójdzie dalej szukać. Jeśli trafi to wykona instrukcję spod "trzecia", bo są one instrukcjami widocznymi także dla "pierwsza" i "druga". Dlatego właśnie zamykasz zazwyczaj poprzez break ciąg instrukcji dla każdego case. Jeśli jednak wiesz, że coś jest wspólne, to walisz je bez break obok i ewentualnie przy drobnych różnicach w głównym bloku instrukcji wyszczególniasz gdzie mają być drobne modyfikacje.
  1. switch (uri::segment(3)) {
  2. case 'nowi':
  3. //ustawianie podstawowych parametrów
  4. $this->podstrona = new View('domyślny widok');
  5. js::add('media/js/jquery.dataTables.min.js');
  6. css::add('media/css/datatables.css');
  7. //ciąg instrukcji
  8. $this->podstrona->zmienna = $this->model->pobieranie_danych();
  9. break;
  10. case 'aktywni':
  11. case 'wylaczeni':
  12. case 'wygasa':
  13. case 'logowania':
  14. case 'leniwi':
  15. case 'callcenter':
  16. //sprawdzanie, czy użytkownik ma prawo odwiedzić podstronę:
  17. if(!valid::level(0,1)) {url::redirect_home();}
  18. //ustawianie podstawowych parametrów
  19. $this->podstrona = new View('inny_panel');
  20. $this->podstrona->typ = uri::segment(3);
  21. js::add('media/js/jquery.dataTables.min.js');
  22. css::add('media/css/datatables.css');
  23. break;
  24. case 'edit':
  25. if(!uri::segment(4) || !is_numeric(uri::segment(4))) {
  26. //tu jeden redirect
  27. url::redirect('domyślne przekierowanie');
  28. }
  29. //ustawianie podstawowych parametrów
  30. break;
  31. default:
  32. //przekieruj wszystkie wywołania nie odpowiadające warunkom
  33. url::redirect('domyślne przekierowanie');
  34. }
Zwróć w przykładzie jednego z moich kodów jak mam rozwiązane to LUB. Posługuję się potem w bloku identycznego kodu dla wszystkich tylko uri::segment(3) decydując co wyświetlę (to akurat odpowiada za ustawienie klasy "active" dla wybranej zakładki). Oczywiście przy sprawdzaniu rozszerzonym helperem (valid::level) wcześniej, czy ma do tego prawo (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował thek 5.01.2010, 09:36:00
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.10.2025 - 09:19