Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy return false moze dzialac w metodzie __set ?
marekc12
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 1.08.2008

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


  1.  
  2. class Uzytkownik
  3. {
  4. public $dane = array();
  5.  
  6. function __set($parametr, $wartosc)
  7. {
  8. switch ($parametr)
  9. {
  10. case 'id':
  11. if(!sprawdzCzyliczbaNaturalna($wartosc)) throw new Exception();
  12. break;
  13. case 'mail':
  14. if(!(filtrMail($wartosc))) return false;
  15. break;
  16. case 'haslo':
  17. if( !( strlen($wartosc) >= 8 && strlen($wartosc) <= 32 ) )return false;
  18. $wartosc = $this->szyfrujHaslo($wartosc);
  19. break;
  20. default:
  21. throw new Exception();
  22. }
  23.  
  24. $this->dane[$parametr] = $wartosc;
  25. }
  26.  
  27. function zapisz()
  28. {
  29. if(isset($this->dane[id]))
  30. {
  31. wyslijZapytanie("UPDATE users SET ".pobierzListeDanych($this->dane)." WHERE id=$this->dane[id]");
  32. }
  33. else
  34. {
  35. $this->dane[data] = date("m.d.y");
  36.   wyslijZapytanie("INSERT INTO users (id,mail,haslo,data) VALUES ('','0','".$this->dane[mail]."','".$this->dane[haslo]."','".$this->dane[data]."')");
  37. }
  38. }
  39.  
  40. function usun()
  41. {
  42. wyslijZapytanie("DELETE FROM users WHERE id=$this->dane[id])");
  43. }
  44.  
  45. function wczytaj()
  46. {
  47. if(count($this->dane))
  48.   $wynik = wyslijZapytanieSelect("SELECT id,mail,haslo,data FROM users WHERE ".pobierzListeDanych($this->dane));
  49. else
  50.   $wynik = wyslijZapytanieSelect("SELECT id,mail,haslo,data FROM users");
  51.  
  52.   return $wynik;
  53. }
  54.  
  55. function szyfrujHaslo($haslo)
  56. {
  57. if( !( strlen($haslo) >= 8 && strlen($haslo) <= 32 ) )
  58. die('Dostalem haslo z bledna iloscia znakow!');
  59.  
  60. $haslo = sha1( $haslo.'yk[d' );
  61.  
  62. return $haslo;
  63. }
  64. }
  65.  
  66.  
  67.  


  1.  
  2. if (count($_POST))
  3. {
  4. $bledy = array();
  5.  
  6.  $Mail = filtrZmienna($_POST['Mail']);
  7.  $Haslo = filtrZmienna($_POST['Haslo']);
  8.  
  9. $uzytkownikSprawdz = new Uzytkownik;
  10. if( $uzytkownikSprawdz->mail=$Mail )
  11. {
  12. if( count( $uzytkownikSprawdz->wczytaj() ) !== 0 )
  13.   $bledy[]='Mail';
  14. }
  15. else
  16.   $bledy[]='Mail';
  17.  
  18. if(empty($bledy))
  19. {
  20. $uzytkownikNowy = new Uzytkownik;
  21. if( ($uzytkownikNowy->mail = $Mail) && ($uzytkownikNowy->haslo=$Haslo) )
  22. $uzytkownikNowy->zapisz();
  23.   else $wyswietlFormularz = true;
  24. }
  25. else
  26. $wyswietlFormularz = true;
  27. }
  28. else
  29. $wyswietlFormularz = true;
  30.  
  31.  





Witam,

powyzej zamiscilem kod ktory pisalem sobie na wlasne potrzeby do tworzenia,usuwania,edytkowania uzytkownikow w bazie danych. Nie jestem bardzo doswiadczony w rozwiazaniach obiektowych. 

Kombinowałem sobie w taki sposob zeby w klasie Uzytkownik poprzez funckcje __set sprawdzac wszystkie wprowadzane dane i ona przy wprowadzaniu jakiejs danej zwracalaby true lub false w zaleznosci od tego czy dana byla poprawna: 

if( !($uzytkownikNowy->mail = $Mail) echo "Wprowadzono niepoprawny adres e-mail";

Niestety nie działa (IMG:style_emoticons/default/sad.gif) Myslalem ze moge tak zrobic i z tego "($uzytkownikNowy->mail = $Mail)" wyjdzie false... niestety mimo polecenia "return false;" w metodzie __set nie zwraca ona false.




Da sie jakos to zrobic zeby ($uzytkownikNowy->mail = $Mail) zwrocilo false lub true , jezeli wiecie o co mi chodzi?? Czy musze sobie zrobic inna metode odpowiedzialna za wprowadzanie wartosci do klasy?

Ten post edytował marekc12 19.10.2009, 18:13:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Tworzenie setterów/getterów jest strasznie upierdliwe. Gdy dodamy do tego jeszcze komentowanie to staje się to jeszcze bardziej upierdliwe. Nie zmienia to jednak faktu, że chyba warto je pisać. Mamy wówczas pełną kontrolę nad wypełnianiem obiektów danymi. Tworząc w setterze $this->pole = (string)$wartosc; mamy pewność, że zawsze będzie tam siedział string. Nie wspomnę już o wymuszeniach typu (set_pole(Moj_Obiekt $wartosc)). Tak więc moim zdaniem warto poświęcić nieco czasu na utworzenie setterów/getterów nawet jeśli mają po prostu ograniczać się do return $this->pole.
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 - 01:38