Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Klasa produkt, dobrze zaprojektowana?
smajster
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 28.04.2006

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


Do swojego sklepu staram się zaprojektować klasę produkt, ale nie do końca wiem czy dobrze się za to biorę (jest to moja pierwsza klasa), także jakbyście mi mogli powiedzieć czy dobrze kombinuje.

jej wstepny projekt:
  1. <?php
  2. class produkt
  3. {
  4. var $id = 0; //jak jest zero ozncza to ze klasa nie odpowiada konkretnemu produktowi
  5.  
  6. function __construct($id_produktu)
  7. {
  8. $this->id = $id_produktu;
  9. }
  10. function dodaj($grupa, $podgrupa, $producent, $nazwa, $parametr1, $parametr2, $cena, $cenahurt, $promocja, $ilosc, $opis, $zdjecie)
  11. {
  12. //dodaje produkt do bazy
  13. }
  14. function kod_produktu($grupa, $podgrupa)
  15. {
  16. //generuje unikalny kod produktu
  17. }
  18. function usun()
  19. {
  20. //usuwa produkt z bazy
  21. }
  22. function wyswietl($cecha)
  23. {
  24. //wyswietla konkretna ceche produktu, np. nazwe lub parametr
  25. }
  26. function edytuj($cecha, $wartosc)
  27. {
  28. //zmienia konkretna wartosc jednej z cech produktu
  29. }
  30. function wartosc($rabat, $rodzaj)
  31. {
  32. //oblicza wartosc produktu zaleznie od rodzaju ceny (hurt, detal, promocja) oraz rabatu
  33. }
  34.  
  35.  
  36.  
  37. }
  38. ?>

Mam watpliwości co do metody dodaj, bo jest ona trochę niespojna z resztą klasy, bo jako jedyna nie wymaga parametru( id produktu) bo jeszcze takiego poprostu nie posiada, także nie wiem czy powinnem ją umieszczać w tej klasie.
Zastanawiam się też jeszcze czy jeden argument to nie mało, ale zaden inny mi nie przychodzi na mysl.

Będe wdzieczny za wszelkie uwagi które pomogą mi nabrać doświadczenia w tworzeniu klas.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
smajster
post
Post #2





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 28.04.2006

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


Witam ponownie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Postarałem się wprowadzić w życie zmiany jakie mi zaproponowaliście i wyszło mi takie cuś:
  1. <?php
  2. ////////////////////////////////
  3.  ///===== KLASA DATA
  4.  //
  5.  //
  6.  
  7. abstract class data 
  8. {
  9. protected $data;
  10. protected $tabela;
  11.  
  12. abstract function dodaj($Array);
  13. abstract function popraw($Array);  
  14. abstract function usun($id);
  15.  
  16.  protected function pobierz_dane($id)
  17.  {
  18.  $pyt = "SELECT * FROM ".$tabela." WHERE id = ".$id;
  19.  $rezult = mysql_query($pyt);
  20.  if(mysql_num_rows($rezult)>0)
  21.  $data = mysql_fetch_array($rezult);
  22.  else echo"nie ma takiego id";
  23.  } 
  24. public function podaj($id,$kolumna)
  25. {
  26. $this->pobierz_dane($id);
  27. if(isset($this->data[$kolumna]))
  28. return $this->data[$kolumna];
  29. else
  30. echo"nie ma takiej kolumny!";
  31. }
  32. protected function id()
  33. {
  34. $pyt="SELECT MAX(id) as ilgrup FROM " .$tabela;
  35. $rezult = mysql_query($pyt);
  36. if($rezult != NULL)
  37. {
  38. $rekord = mysql_fetch_array($rezult);
  39. var $id = $rekord['ilgrup']+1;
  40. return $id;
  41. }
  42. else
  43. return 1;
  44. }
  45. }
  46.  
  47. ?>


  1. <?php
  2. ////////////////////////////////
  3.  ///===== KLASA GRUPA
  4.  //
  5.  //
  6. class grupa extends data
  7. {
  8. protected $tabela = "_dbProducts._dbtGroup";
  9. public function dodaj($Array)
  10. {
  11. if($Array["kod"] =="")
  12. {
  13. $pyt = "INSERT INTO " .$tabela."(id, kod, nazwa, iloscpodg)  VALUES(".$this->id().", " .$this->kod_grupy().", " .$Array["nazwa"].", "0");";
  14. }
  15. else
  16. {
  17. $pyt = "INSERT INTO " .$tabela."(id, kod, nazwa, iloscpodg)  VALUES(".$this->id().", " .$Array["kod"].", " .$Array["nazwa"].", "0");";
  18. }
  19.  $rezult = mysql_query($pyt);
  20. }
  21. private function kod_grupy()
  22. {
  23. $pyt="SELECT MAX(id) as ilgrup FROM " .$tabela;
  24. $rezult = mysql_query($pyt);
  25. if($rezult != NULL)
  26. {
  27. $rekord = mysql_fetch_array($rezult);
  28. var $kod = $rekord['ilgrup']+1;
  29. return $kod;
  30. }
  31. else
  32. return 1;
  33. }
  34. public function popraw($Array)
  35. {
  36. $pyt = "UPDATE " .$tabela." SET nazwa = '" .$Array["nazwa"] ."'  WHERE grupa = " .$Array["id"];  
  37.  $rezult = mysql_query($pyt);
  38.  if($rezult != NULL)
  39.  return 1;
  40.  else return 0;
  41. }
  42. public function usun($id)
  43. {
  44. // POBRANIE Z BAZY NAJWIĘKSZEGO ID
  45. $maxGrp=($this->id - 1);
  46. // POBRANIE GRUPY O NAJWIĘKSZYM ID
  47. $pyt = "SELECT * FROM " .$tabela." WHERE id = " .$maxGrp;
  48.  $rezult = mysql_query($pyt);
  49.  $ostatni = mysql_fetch_array($rezult);
  50.  // ZAMIANA GRUPY O NAJWIĘKSZYM ID NA ID KTÓRE MA BYĆ USUNIĘTE
  51.  $pyt = "UPDATE " .$tabela." SET grupa = " .$ostatni["grupa"] .", nazwa = '" .$ostatni["nazwa"] ."', iloscpgp = " .$ostatni["iloscpgp"] ." WHERE id = " .$id;
  52.  $rezult = mysql_query($pyt);
  53.  // USUWANIE OSTATNIEJ (O NAJWIĘKSZYM ID) GRUPY
  54. $pyt = "DELETE FROM " .$tabela." WHERE id = " .$id;
  55. $rezult = mysql_query($pyt);
  56. if(!(mysql_num_rows($rezult)>0))
  57. echo"nie ma takiego id";
  58. } 
  59. }
  60. ?>


Klasa grupa jest mniej wiecej analogiczna do klasy produkt tylko prostrza i krotsza dlatego ją zamieściłem, obie dziedziczą od klasy data. Jak myślicie tak to powinno wyglądać? Obie te klasy mają znajdować się niby w klasie modelu. Są to moje pierwsze skończone klasy także proszę o wyrozumiałość (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jak zauważacie jakieś błędy bardziej merytoryczne niż składniowe to skrobnijcie, bo chciałbym się jak najszybciej nauczyć poprawnie pisać w OOP.

Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


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: 26.12.2025 - 01:05