Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Programowanie Obiektowe
Oczko21
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.07.2009

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


Witam,
Napisalem moj pierwszy skrypt z wykorzystaniem programowania obiektowego i chcialbym spytac czy to o cos takiego chodzi w programowaniu obiektowym, gdyz w wielu ksiazkach model projektowania obiektowego jest przedstawiany za pomoca zwierzat, pojazdow itp. Niestety jeszcze nie zdolalem wyksztalcic sobie wyobrazni do takiego stopnia aby model zwierzat przelozyc na model chociazby formularza sluzacego do kontaktu uzytkownika strony z jej wlascicielem.

  1. include"klasa_db.php";
  2.  
  3. class Kontakt
  4. {
  5. public $formularz = array(email => '', temat => '', tresc => '');
  6. public $wiadomosc;
  7. public $ip;
  8.  
  9. public function Zapisz()
  10. {
  11. $this->ip = $_SERVER['REMOTE_ADDR'];
  12. $db = new BazaDanych;
  13. $query="INSERT into wiadomosci (Email, Tytul, Tresc, Data, IP) VALUES('".$this->formularz['email']."', '".$this->formularz['temat']."', '".$this->formularz['tresc']."', NOW(), '$this->ip')";
  14. $db->db($query);
  15. $this->wiadomosc = 'Wszystko poszlo elegancko.';
  16. }
  17. public function SprawdzFormularz()
  18. {
  19. if(isset($_POST['email']) && isset($_POST['temat']) && isset($_POST['tresc']))
  20. {
  21. $this->formularz['email'] = addslashes($_POST['email']);
  22. $this->formularz['temat'] = addslashes($_POST['temat']);
  23. $this->formularz['tresc'] = addslashes($_POST['tresc']);
  24. $this->Zapisz();
  25. }else{
  26. $this->wiadomosc = 'Nie wypełniłeś wszystkich pól formularza.';
  27. }
  28. }
  29. }
  30.  
  31. if(isset($_POST['wyslij']))
  32. {
  33. $b = new Kontakt;
  34. $b->SprawdzFormularz();
  35. echo $b->wiadomosc;
  36. }
  37.  


  1. <form method="post" action="">
  2. <input type="text" name="email" /><br />
  3. <input type="text" name="temat" /><br />
  4. <textarea name="tresc"></textarea><br />
  5. <input type="submit" name="wyslij" value="Wyslij" />
  6. </form>


Skrypt dziala poprawnie, prosze jedynie o zwrocenie mi uwagi w kwesti bledow ktore popelnilem. Jak wspomnialem na poczatku dopiero zaglebiam sie w tajniki programowania obiektowego i chcialbym nauczyc sie go poprawnie, dlatego prosze wytykac bledy, nawet najdrobniejsze, nie chce wyrobic sobie zlych nawykow zaraz z poczatku.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
greycoffey
post
Post #2





Grupa: Zarejestrowani
Postów: 320
Pomógł: 29
Dołączył: 3.04.2010

Ostrzeżenie: (20%)
X----


Ogółem połączyłeś model, widok i kontroler w jedno.
  • Metoda SprawdzFormularz
    • Właścicwie walidacją danych powinna się zajmować inna klasa - zasada jednej odpowiedzialności.
    • Dane pobierasz z określonych pół, do tego przez POST. Powinny być przekazywane przez argumenty metody, albo przekazywane w konstruktorze klasy. W OOP ważna jest przenośność. Co z tego, jak nie będziesz mógł zastosować tej klasy dla dwóch różnych formularzy?
  • Metoda Zapisz
    • Startujesz nowe połączenie z bazą danych. Jest trochę nieefektywnie startować za każdym razem nowe. Poczytaj o Dependency Injection Container, Singletonie czy Rejestrze.
  • Ogół klasy
    • Klasa służy do kontaktu. Pomyśl, że chcesz zrobić klasę do kontaktu od zapisywania do bazy danych wiadomości, po mail, irc czy GG, tak, by móc je stosować zmieniając tylko linijkę w tekście. Niech potem wszystkie klasy służące do poszczególnych form kontaktu - Kontakt_Email, Kontakt_Baza, Kontakt_Irc implementują interfejs RodzajKontaktu, a potem przekazywać ich instancje do konstruktora, z określeniem implementowanego interfejsu, przez co powstanie jednolita i wspólna droga komunikacji. Ale tutaj wybiegłem poza ramy tego projektu. Generalnie ucz się, czytaj o OOP, zapoznawaj się z wzorcami projektowymi, podpatrzaj u frameworków jak to jest zrobione i pisz, pisz i pisz.
Go to the top of the page
+Quote Post
Oczko21
post
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.07.2009

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


Dzieki, wezme sobie te rady do serca i postaram sie to zmienic. Zapytam tylko czy dobrze to rozumiem:
Mam zrobic 2 klasy. Jedna do walidacji formularzy, a druga do zapisywania.
W pierwszym maja byc rozne metody, odnoszace sie do sprawdzania roznych formularzy, a w drugim metody odnoszace sie do zapisy sprawdzanych formularzy i wartosci mam przekazywac przez argumenty tych metod tak?
Go to the top of the page
+Quote Post

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: 2.10.2025 - 22:18