Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Objektowe podejście do produktu, W jaki sposób najlepiej podejść do opracowywania klasy produktu
porady-it.pl
post
Post #1





Grupa: Zarejestrowani
Postów: 89
Pomógł: 20
Dołączył: 13.05.2007
Skąd: Warszawa

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


Witam,

Chciałem się dowiedzieć czy mój tok myślenia odnośnie programowania obiektowego jest właściwy. Napisałem klasę do obsługi produktu jest to oczywiście mały zalążek tej klasy jednak nim zacznę pisać dalej chciałem się upewnić czy rozwiązania przyjmowane prze zemnie są prawidłowe.

  1. <?php
  2.  
  3. class product {
  4.  
  5. /**
  6.  * Uchwyt do bazy danych.
  7.  * 
  8.  * @var myPDO
  9.  */
  10. private $db;
  11.  
  12. /**
  13.  * Przechowuje identyfikator produktu.
  14.  * 
  15.  * @var int
  16.  */
  17. private $id;
  18.  
  19. /**
  20.  * Przechowuje nazwę produktu.
  21.  *
  22.  * @var string
  23.  */
  24. private $name;
  25.  
  26. /**
  27.  * Przechowuje cenę produktu.
  28.  * 
  29.  * @var float
  30.  */
  31. private $price;
  32.  
  33. /**
  34.  * Przechowuje listę parametrów przypisanych do produktu.
  35.  * 
  36.  * @var array
  37.  */
  38. private $parameters;
  39.  
  40. /**
  41.  * Konstruktor tworzy uhcwyt do bazy danych.
  42.  */
  43. public function __construct() {
  44. $this->db = myPDO::getInstance();
  45. }
  46.  
  47. /**
  48.  * Ustawia identyfikator produktu.
  49.  * 
  50.  * @access public
  51.  * @param int $id - identyfikator produktu
  52.  * @return void
  53.  */
  54. public function setID($id) {
  55.  
  56. $this->id = (int)$id;
  57.  
  58. //jeśli został przypisany identyfikator różny od zera 
  59. //pobieramy informacje z bazy danych
  60. if($id)
  61. $this->_getInfo();
  62. }
  63.  
  64. /**
  65.  * Ustawia nazwę produktu.
  66.  * 
  67.  * @access public
  68.  * @param string $name - nazwa produktu
  69.  * @return void
  70.  */
  71. public function setName($name) {
  72. $this->name = $name;
  73. }
  74.  
  75. /**
  76.  * Ustawia cenę produktu.
  77.  * 
  78.  * @access public
  79.  * @param float $price - cena produktu
  80.  * @return void
  81.  */
  82. public function setPrice($price) {
  83. $this->price = $price;
  84. }
  85.  
  86. /**
  87.  * Zwraca nazwę produktu.
  88.  * 
  89.  * @access public
  90.  * @return string
  91.  */
  92. public function getName() {
  93. return $this->nazwa;
  94. }
  95.  
  96. /**
  97.  * Zwraca cenę produktu.
  98.  * 
  99.  * @access public
  100.  * @return float
  101.  */
  102. public function getPrice() {
  103. return $this->price; 
  104. }
  105.  
  106. /**
  107.  * Zwraca identyfikator produktu.
  108.  * 
  109.  * @access public 
  110.  * @return int
  111.  */
  112. public function getID() {
  113. return $this->id;
  114. }
  115.  
  116. /**
  117.  * Pobiera informacje z bazy danych o produkcie.
  118.  *
  119.  * @access private
  120.  */
  121. private function _getInfo() {
  122.  
  123. $stmt = $this->db->query(' SELECT 
  124. *
  125.  
  126. FROM 
  127. '.PRODUCTS.
  128.  
  129. WHERE 
  130. id = '.$this->id);
  131.  
  132. $arrProduct = $stmt -> fetch(PDO::FETCH_ASSOC);
  133.  
  134. $stmt->closeCursor();
  135.  
  136. //przypisanie danych z bazy do zmiennych
  137. $this->name  = $arrProduct['name'];
  138. $this->price  = $arrProduct['price'];
  139. }
  140. }
  141. ?>


Pierwsze moje pytanie dotyczy samego pobierania danych produktu z bazy danych czy przyjęte rozwiązanie jest prawidłowe czy też można to rozwiązać w jakiś lepszy sposób questionmark.gif

Kolejna sprawa dotyczy aktualizacji danych produktu, gdzieś wyczytałem (niestety obecnie nie jestem w stanie określić źródła tych informacji), że dobrym podejściem jest aktualizacja danych produktu w bazie przy niszczeniu obiektu (pisząc odpowiednią funkcję w destruktorze). Czy rzeczywiście jest to dobre rozwiązanie questionmark.gif

Ten post edytował porady-it.pl 2.11.2007, 16:00:16


--------------------
Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
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: 20.08.2025 - 10:01