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.
<?php class product { /** * Uchwyt do bazy danych. * * @var myPDO */ private $db; /** * Przechowuje identyfikator produktu. * * @var int */ private $id; /** * Przechowuje nazwę produktu. * * @var string */ private $name; /** * Przechowuje cenę produktu. * * @var float */ private $price; /** * Przechowuje listę parametrów przypisanych do produktu. * * @var array */ private $parameters; /** * Konstruktor tworzy uhcwyt do bazy danych. */ public function __construct() { $this->db = myPDO::getInstance(); } /** * Ustawia identyfikator produktu. * * @access public * @param int $id - identyfikator produktu * @return void */ public function setID($id) { $this->id = (int)$id; //jeśli został przypisany identyfikator różny od zera //pobieramy informacje z bazy danych if($id) $this->_getInfo(); } /** * Ustawia nazwę produktu. * * @access public * @param string $name - nazwa produktu * @return void */ public function setName($name) { $this->name = $name; } /** * Ustawia cenę produktu. * * @access public * @param float $price - cena produktu * @return void */ public function setPrice($price) { $this->price = $price; } /** * Zwraca nazwę produktu. * * @access public * @return string */ public function getName() { return $this->nazwa; } /** * Zwraca cenę produktu. * * @access public * @return float */ public function getPrice() { return $this->price; } /** * Zwraca identyfikator produktu. * * @access public * @return int */ public function getID() { return $this->id; } /** * Pobiera informacje z bazy danych o produkcie. * * @access private */ private function _getInfo() { $stmt = $this->db->query(' SELECT * FROM '.PRODUCTS.' WHERE id = '.$this->id); $arrProduct = $stmt -> fetch(PDO::FETCH_ASSOC); $stmt->closeCursor(); //przypisanie danych z bazy do zmiennych $this->name = $arrProduct['name']; $this->price = $arrProduct['price']; } } ?>
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

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
