Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: "Długi" 'if', czy wyjątki?
Forum PHP.pl > Forum > PHP
404
  1. if
  2. (
  3. isset($_GET['a']) && validate($_GET['a'], '/^[a-zA-Z0-9\-]+$/') &&
  4. isset($_GET['b']) && validate($_GET['b'], '/^[a-zA-Z0-9\-]+$/') &&
  5. isset($_GET['v']) && validate($_GET['v'], '/^[0-9]{2}-[0-9]{2}-[0-9]{4}$/') &&
  6. isset($_GET['x']) && validate($_GET['x'], '/^([a-z0-9\!\&\-\ ]+)$/') &&
  7. $event = $this->event->get_details($_GET['a'], $_GET['b'], $asd)
  8. )
  9. {
  10. //...
  11. }

No niestety, ale jestem zmuszony do sprawdzenia tylu rzeczy. Pytanie tylko, czy zostawić to tak jak jest, czy skorzystać z wyjątków... Jak Wy radzicie sobie z tak masakrycznym kodem? tongue.gif
viking
Za pomocą klas. Załóżmy abstrakcyjnie coś w stylu:

  1. /model/forms/xxx
  2. $form = new Validator();
  3. $form->addValidator('pole1', array(new Validator_Regex)->addValidator('pole2', array(new Validator_Regex)

W kontrolerze:

  1. $f = new Model_Forms_Xxx();
  2. if ($f->dataValid()}...
d3ut3r
  1. isset($_GET['a']) && validate($_GET['a'], '/^[a-zA-Z0-9\-]+$/')


Dlaczego funkcja validate nie sprawdzi czy zmienna istnieje ? wtedy odchodzi Ci isset i już nie będzie tak skomplikowane smile.gif
no_face
Lol, moze dlatego, ze zabezpiecza sie przed dostepem do nieistniejacego geta?

Chyba, ze miales na mysli takie wywolanie:

  1. validate('a', '/^[a-zA-Z0-9\-]+$/')
d3ut3r
Cytat
Lol, moze dlatego, ze zabezpiecza sie przed dostepem do nieistniejacego geta?
Chyba, ze miales na mysli takie wywolanie:


nie miałem biggrin.gif, ehh no tak notice .... w takim razie sorry za wprowadzenie w błąd wstydnis.gif
404
@viking: Twoje rozwiązanie wygląda na bardzo dobre. Będę musiał to przemyśleć i sprawdzić jak będzie się to sprawdzać w moim przypadku. Dzięki smile.gif
@d3ut3r: nie wiem czemu nie przyszło mi to do głowy smile.gif Dzięki za podsunięcie pomysłu smile.gif
Niktoś
Wydaje mi się, że w tym przypadku lepiej by było skorzystać z bloku try catch.
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.