Witam,
jestem początkujący w OOP i mam kilka wątpliwości i pytan w związku z klasami. Napisałem przykładową klasę (właściwie jej część):
<?php
class Artykuly { // extends Tresci
private $cBaza; //uchwyt bazy
private $artId;
private $artTytul;
private $artTresc;
private $artAutor;
private $artNotatki;
private $artData;
private $artCzas;
private $artOdslony;
private $artKategoria;
private $prefix = 'testy'; // prefix do tabel w bazie danych
private function __construct() {
$this->cBaza = pg_connect ('user=user password=haslo dbname=baza');
throw new Exception ("Nie można się połączyć z bazą.");
}
}
private function getArt($id, $ile=1, $początek=0) {
// umieścić funkcje pobierania w odzielnej fukncji, czy lepiej dodać do konstrukto
ra?
$zapytanie = "SELECT * FROM `".$prefix."_artykuly` WHERE `id` = '".$id."' ORDER BY `id` ASC LIMIT '".$poczatek."', '".$ile."';";
$res = pg_query($this->cBaza, $zapytanie); throw new Exception("Błąd: Nieprawidłowe zapytanie. Sprawdź skrypt!");
}
throw new Exception("Błąd: Brak artykułu o identyfikatorze ".$id.".");
}
// i tutaj nachodzi mnie pytanie, jak wydobyć kilka artykułów? Czy mogę spokojnie użyć pętli foreach?
$this->artID = $id;
$this->artTytul = $dane['tytul'];
$this->artTresc = $dane['tresc'];
$this->artAutor = $dane['autor'];
[..] // pozostałe przypisy do właściwości klasy
$this->artKategoria = $dane['kategoria'];
}
function __get($parametr) { // wiadomo co to za funkcja... i tak tylko na tymczasem...
if (isset($this->dane[$parametr])) { return $this->dane[$parametr];
}
return '';
}
private function usunArt($id) {
// czy mogę w tym miejscu utowrzyć egzemplarz tej klasy?
// $artDoUsuniecia = new Artykuly();
// $artDoUsuniecia->getArt($id);
// if (!isset($artDoUsuniecia->artTytul)) {
// echo 'Błąd: Brak artykułu o identyfikatorze '. $id .', który chcesz usunąć!';
// }
// czy muszę jeszcze raz pisać kod, aby sprawdzić czy dany artykuł istnieje?
// czy może istnieje jakiś inny sposób, aby sprawdzić czy ten artykuł został zapis
any w bazie, uzywając np. '$this->getArt($id)'?
$zapytanie = "DELETE FROM `".$prefix."_artykuly` WHERE `id` = '".$id."';";
$res = pg_query($this->cBaza, $zapytanie); throw new Exception("Błąd: Nieprawidłowe zapytanie. Sprawdź skrypt!");
}
}
private function getKategoria($id) {
return $this->artKategoria;
}
private function getNextArtID($id) {
[..] // inne fukcje
}
}
?>
Większość zastanawiających mnie rzeczy zamieściłem w komentarzach w kodzie, byłbym wdzieczny, gdyby ktoś rozwiał moje wątpliwości...
Chciałbym się dowiedzieć, czy mój tk rozumowania OOP jest prawidłowy? Czy można ten fargment klasy jakoś zoptymalizować?
Z góry dziękuję, za wszelkie sugestie...