Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Programowanie Obiektowe..., czy tak nalezy postepowac
mhs
post
Post #1





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


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
Go to the top of the page
+Quote Post
Parti
post
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 22.07.2004

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


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.
Go to the top of the page
+Quote Post
hwao
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




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'.
Go to the top of the page
+Quote Post
mhs
post
Post #4





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


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. ?>


Ten post edytował mhs 1.09.2004, 10:54:13
Go to the top of the page
+Quote Post
Parti
post
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 22.07.2004

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


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. ?>


Ten post edytował Parti 1.09.2004, 11:12:33
Go to the top of the page
+Quote Post
hawk
post
Post #6





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

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


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.
Go to the top of the page
+Quote Post
Parti
post
Post #7





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 22.07.2004

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


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. ?>
Go to the top of the page
+Quote Post
mhs
post
Post #8





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


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..?
Go to the top of the page
+Quote Post
matid
post
Post #9





Grupa: Zarejestrowani
Postów: 362
Pomógł: 0
Dołączył: 18.02.2004
Skąd: Knurów

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


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:48