Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Programowanie Obiektowe...
Forum PHP.pl > Forum > PHP
mhs
Witam serdecznie,
mam nastepujaca klase (wlasciwie jej poczatek), jest to klasa odpowiedzialna za prawdzanie danych...

wyglada ona w sposob nastepujacy:
SprawdzanieDanych.class.php
  1. <?php
  2.  
  3.  class SprawdzanieDanych
  4.  {
  5.  // sprawdzany ciag
  6.  var $ciag;
  7.  
  8.  
  9.  /**
  10. * @desc Kontruktor klasy
  11. */
  12.  function SprawdzanieDanych($ciag) {
  13.  $this->ciag = $ciag;
  14.  }
  15.  
  16.  
  17.  /**
  18. * @desc Sprawdzenie poprawnosci adresu poczty elektronicznej
  19. *
  20. * @return bool
  21. */
  22.  function sprawdzEmail() {
  23. return preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/', $this->ciag);
  24.  }
  25. }
  26.  
  27. ?>


a teraz wykorzystanie tej klasy w kodzie

index.php
  1. <?php
  2.  
  3. require_once('SprawdzanieDanych.class.php');
  4.  
  5. $ciag = 'mhs_news@interia.pl';
  6.  
  7. $spr = new SprawdzanieDanych($ciag);
  8. var_export($spr->sprawdzEmail());
  9.  
  10. $ciag = 'mhs_newsinteria.pl';
  11.  
  12. $spr->ciag = $ciag;
  13. var_export($spr->sprawdzEmail());
  14.  
  15. ?>


co do tego kodu to mam pytanie czy w prawidlowy sposob tworze konstruktor klasy oraz czy pozniej prawidlowo wykonuje czynnosci w pliku index.php zwlaszcza chodzi mi o linie 12 - czy w ten sposob powinno sie postepowac... gdyz moge przekazywac ciag poprzez argument w metodzie (czyli: $spr->email($ciag), oczywiscie trzeba zmienic troche kod klasy) ale wowczas z kolei nie mam co "wrzucic" do kontruktora klasy...

prosze o podpowiedzi...

mhs
Parti
Nie widze sensu tworzenia klasy do czegoś takiego. A jeśli już to wszystkie metody niech będa statyczne. Nie ma sensu tworzyć instancji takiej klasy.
hwao
Tak jak powiedział przedmówca.
Taka klasa jak teraz pokazales jest bezzensowan gdyz wystarczy do tego z powodzeniem 1 funkcja....

Jezeli to bardziej rozbudujesz i zaleznosci jakies miedzy kalsami nawiazesz to moze bedzie z tego jakis 'pozytek'.
mhs
jezeli chodzi o sama klase to mysle, ja rozbudowac o kolejne metody sprawdzajace nip, regon, pesel i troche innych rzeczy...

w chwili obecnej to ona ma nastepujaca postac:

  1. <?php
  2.  
  3. class SprawdzanieDanych
  4. {
  5. // sprawdzany ciag
  6. var $ciag;
  7.  
  8. // zmienna przechowujaca sume
  9. var $suma;
  10.  
  11. // liczba kontrolna
  12. var $liczba_kontrolna;
  13.  
  14. // tablica przechowujaca wagi dla poszczegolnych pozycji w sprawdzanym numerze
  15. var $wagi;
  16.  
  17. // licznik petli
  18. var $i;
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. /**
  26.  * @desc Kontruktor klasy
  27.  */
  28. function SprawdzanieDanych($ciag) {
  29. $this->ciag = $ciag;
  30. }
  31.  
  32.  
  33.  
  34. /**
  35.  * @desc Sprawdzenie poprawnosci adresu poczty elektronicznej
  36.  *
  37.  * @return bool
  38.  */
  39. function email() {
  40. return preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/', $this->ciag);
  41. }
  42.  
  43.  
  44.  
  45. /**
  46.  * @desc Sprawdzenie poprawnosci kodu pocztowego
  47.  *
  48.  * @return bool
  49.  */
  50. function kodPocztowy() {
  51. return preg_match('/^[0-9]{2}[-][0-9]{3}$/', $this->ciag);
  52. }
  53.  
  54.  
  55.  
  56. /**
  57.  * @desc Sprawdzanie poprawnosci numeru NIP wg. wzorca: xxx-xxx-xx-xx
  58.  *
  59.  * @return bool
  60.  */
  61. function nip() {
  62. // sprawdzenie dopasowania do wzorca
  63. if (!ereg('^[0-9]{3}-[0-9]{3}-[0-9]{2}-[0-9]{2}$', $this->ciag))
  64. return 0;
  65.  
  66. $this->ciag = str_replace('-', '', $this->ciag);
  67.  
  68. $this->wagi = array(6, 5, 7, 2, 3, 4, 5, 6, 7);
  69.  
  70. $this->suma = 0;
  71. for ($this->i = 0; $this->i < count($this->wagi); $this->i++)
  72. $this->suma += substr($this->ciag, $this->i, 1) * $this->wagi[$this->i];
  73.  
  74. if ( ($this->suma % 11) == substr($this->ciag, 9, 1) )
  75. return 1;
  76. else
  77. return 0;
  78. }
  79.  
  80.  
  81.  
  82. /**
  83.  * @desc Sprawdzanie poprawnosci numeru REGON
  84.  *
  85.  * @return bool
  86.  */
  87. function regon() {
  88. if (!ereg('^[0-9]{9}$', $this->ciag))
  89. return 0;
  90.  
  91. $this->wagi = array(8, 9, 2, 3, 4, 5, 6, 7);
  92.  
  93. $this->suma = 0;
  94. for ($this->i = 0; $this->i < count($this->wagi); $this->i++)
  95. $this->suma += substr($this->ciag, $this->i, 1) * $this->wagi[$this->i];
  96.  
  97. if ( ($this->suma % 11) == substr($this->ciag, 8, 1))
  98. return 1;
  99. elseif ( (($this->suma % 11) == 10) && (substr($this->ciag, 8, 1) == 0) )
  100. return 1;
  101. else
  102. return 0;
  103. }
  104.  
  105.  
  106.  
  107. /**
  108.  * @desc Sprawdzanie poprawnosci numeru PESEL
  109.  *
  110.  * @return bool
  111.  */
  112. function pesel() {
  113. if (!ereg('^[0-9]{11}$', $this->ciag))
  114. return 0;
  115.  
  116. $this->wagi = array(1, 3, 7, 9, 1, 3, 7 , 9, 1, 3);
  117.  
  118. $this->suma = 0;
  119. for ($this->i = 0; $this->i < count($this->wagi); $this->i++)
  120. $this->suma += substr($this->ciag, $this->i, 1) * $this->wagi[$this->i];
  121.  
  122. $this->liczba_kontrolna = 10 - ($this->suma % 10);
  123.  
  124. if ( ($this->liczba_kontrolna == 10) && (substr($this->ciag, 10, 1) == 0) )
  125. return 1;
  126. elseif ($this->liczba_kontrolna == substr($this->ciag, 10, 1))
  127. return 1;
  128. else
  129. return 0;
  130. }
  131. }
  132.  
  133. ?>
Parti
Nadal bezsensu.
Lepiej tak jeśli już koniecznie chcesz klasę:
  1. <?php
  2. class SprawdzanieDanych
  3. {
  4. function SprawdzEmail($ciag)
  5. {
  6. return preg_match(&#092;"/lala/\", $ciag);
  7. }
  8.  
  9. function SprawdzKodPocztowy($ciag)
  10. {
  11. return preg_match(&#092;"/bleble/\", $ciag);
  12. }
  13.  
  14. // itd.
  15. }
  16.  
  17. if (SprawdzanieDanych::SprawdzEmail(&#092;"parti@poczta.com\"))
  18. // cos tam..
  19.  
  20. ?>
hawk
Kompletna katastrofa. W programowaniu obiektowym chodzi o obiekty, które mają odwzorowywać dziedzinę biznesową, blah, blah. To wcale nie jest to samo co programowanie "klasowe", lub raczej "statyczno-klasowo-proceduralne", które tak naprawdę jest gorsze niż programowanie proceduralne, bo wprowadza dodatkowy zamęt i bałagan.

Krótko, OOP != wrzucenie kilku funkcji to przypadkowej klasy. To co widzimy to raczej wymuszona emulacja namespaces przez mechanizm klas.
Parti
Cytat(hawk @ 2004-09-01 13:05:20)
Krótko, OOP != wrzucenie kilku funkcji to przypadkowej klasy. To co widzimy to raczej wymuszona emulacja namespaces przez mechanizm klas.

Zgadzam się w 100%. Jeszcze jeden kwiatek z tej klasy:
  1. <?php
  2. class SprawdzanieDanych
  3. {
  4. // licznik petli
  5. var $i;
  6.  
  7. ?>
mhs
no dobrze, ale spsob w jaki chce do tego podejsc (czyli napisanie klasy dzieki ktorej bede mogl sprawdzac poprawnosc danych jest zle) czy sposob w jaki to wykonuje..?
matid
Napisanie takiej klasy nie jest złe, tylko nie nazywajmy tego programowaniem obiektowym.
Traktuj to raczej jako namespace pozwalający Ci uniknąć konfliktów nazw i używaj nie metody obiektu a funkcji klasy, bo obiekt jest tutaj wogóle nie potrzebny.
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.