Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie zmiennych w klasie?
Forum PHP.pl > Forum > PHP > Object-oriented programming
Joachim Peters
Witam,

Zastanawiam się czy lepiej będzie sprawdzać czy otrzymaliśmy dane, czy zmienna jest taka i taka itd. w funkcji klasy czy przed jej wywołaniem? Jak robicie to u siebie?

Pozdrawiam
jastu
W większości przypadków to właśnie metody klasy odpowiadają za sprawdzenie poprawności przyjmowanych parametrów (mogą zwrócić info o niepoprawnym parametrze, błędzie), wszystko jednak zależy od Twojej implementacji. Możesz też stworzyć metody operującą na różnych typach parametrów lub klasę osłonową która zwróci odpowiedni bład zanim stworzy obiekt klasy do której chcemy przekazać wcześniej omawiane parametry. A co chcesz osiagnąć ?
Joachim Peters
Przeznaczenie ma być ogólne, chodzi mi o to czy lepszym rozwiązaniem (także estetycznym) będzie:
  1. <?php
  2. if($cosTam == 2) {
  3. $obiekt->jakasfunkcja($cosTam);
  4. } else {
  5. throw new Exception('Wyjątek 1');
  6. }
  7. ?>

czy
  1. <?php
  2. $obiekt->jakasfunkcja($cosTam);
  3. ?>

i w tej metodzie
  1. <?php
  2. if($cosTam == 2) {
  3. // instrukcje...
  4. }
  5. ?>


Zdaję mi się, że pierwsze rozwiązanie będzie lepsze, ponieważ nie jeżeli warunek się nie spełni nie będzie trzeba wywoływać funkcji, ale to tylko moje zdanie, a ja się na optymalizacji nie znam smile.gif
Ludvik
Jeżeli to są warunki, które muszą zostać spełnione przed wykonaniem działań, to powinieneś umieścić je w metodzie. Albo będziesz je powtarzał przy każdym wywołaniu (n razy), albo raz w metodzie. DRY.
Sedziwoj
Ja mam podejście, że metody same sobie pilnują co dostają, bo tylko one wiedzą co powinny dostać.
Potem w kodzie przy wywoływaniu jest już czyściej, bez warunków itp.
Taka metoda zwraca przy błędnych parametrach wyjątek, więc łatwo dojść co poszło nie tak, a że sama się pilnuje, nikt nie zapomni czegoś sprawdzić przed jej wywołaniem, a to powoduje że w przyszłości jak ktoś będzie z niej korzystał, po prostu wykorzysta, bo nie będzie musiał wiedzieć co musi sprawdzić, bo sama sprawdza, potem odpowiednie testy i wszystko powinno śmigać.
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.