Pytanie brzmi: czy jeśli dla jakiejś dowolnej klasy, która dziedziczy po BaseClass stworzę konstruktor to czy ten z BaseClass zostanie nadpisany czy też będzie wywoływany tak aby nie musieć jeszcze raz inicjalizować połaczenia z AdoDb?
Czy wywołania $this->doSQL(); w metodach createForumSQL(), updateForumSQL() wykonają się poprawnie (tzn czy będzie utrzymane połaczenie z bazą?)
Za szybką i rzeczową odpowiedź z góry dziękuję
Poniżej listingi:
baseclass.php
<?php #includy include("./includes/errors.inc.php"); require_once("../core/adodb/adodb.inc.php"); #klasy błędów class SqlException extends Exception {}; /** * Klasa bazowa dla wszystkich klas * */ class BaseClass { /** * Połaczenie z bazą danych * * @var unknown_type * @access private */ private $db; /** * Wynik zapytania * * @var unknown_type * @access private */ private $result; /** * Zapytanie do bazy * * @var string * @access private */ private $sql; /** * Konstruktor * * @param array $rbx_db * @access public */ public function __construct($rbx_db){ # połącz z bazą $this->db = NewADOConnection("mysql"); # raportuj wszystkie błędy z AdoDB $this->db->debug = true; # raportuj wszysrkie błedy z php # połącz z bazą $this->db->Connect($rbx_db['host'], $rbx_db['user'], $rbx_db['pass'], $rbx_db['name']); } /** * Zwróc obiekt połączenia z bazą * * @return unknown * @access public */ public function getDB(){ return $this->db; } /* * Zwróc rezultat zapytania * * @return unknown * @access public */ public function getResult(){ return $this->result; } /** * Ustaw zapytanie sql * * @param string $sql * @access public */ public function setSql(string $sql) { $this->sql = $sql; } /** * Zwróć treść zapytania * * @return string $sql */ public function getSql() { return $this->sql; } /** * Zwróć wyjątek jeśli rezultat zapytania jest pusty * * @return true jeśli wynik zapytania jest poprawny * @throws SQL_EXECUTE_ERROR jeśli w wyniku zapytania nie uzyskano poprawnego wy
niku * @access public */ public function checkResult() { if ($this->result = EOF) throw new SqlException(SQL_EXECUTE_ERROR); else return true; } /** * Wywołanie zapytanie SQL * * @param string $sql zapytanie SQL * @access public */ public function executeSQL (string $sql){ #gdy nie podano zapytania sql wywołaj odmyślnie zapytanie SQL $this->result = $this->db->Execute($newsql); } /** * Wywołanie wszytkich metod związanych z wykonaniem zapytanie w jednej funkcji * * @param string $sql * @access public */ public function doSQL($sql){ $this->executeSQL($sql); $this->checkResult(); } } ?>
forum.php
<?php include("./includes/errors.inc.php"); include("./classes/baseclass/php"); /** * Klasa błędów konstruktora klasy Forum * */ class ForumException extends Exception {}; /** * Klasa obsługi forum **/ class Forum extends BaseClass { /** * @var integer * @access private * Identyfikator forum */ private $forum_id = -1; /** * @var array * @access private * Lista moderatorów forum */ /** * @var integer * @access private * Założyciel forum */ private $owner_id = -1; // założyciel forum /**#@+ * @var string * @access private */ /** * Tytuł (nazwa) forum */ private $title = ""; /** * Opis forum */ private $description = ""; /** * Ilość postów umieszczonych na forum */ private $forum_posts = ""; /** * Ilość tematów umieszczona na forum */ private $forum_topics = ""; /** * Słowa kluczowe potrzebne do kategoryzowania forów */ private $key_words = ""; /**#@-*/ /** * Konstruktor * * Ustawienie obiektu połączenia z bazą danych, inicjalizuje wartości początkowe
prywatnych pól wartościami domyślnymi * * @param int $forum_id Identyfikuje forum * @param string $title Zawiera tytuł forum * @param int $owner_id Identyfikuje właściciela forum * @access public * @throws ForumException **/ public function __construct(int $forum_id, string $title, int $owner_id) { else { $this->description = ""; $this->forum_id = $forum_id; $this->forum_posts = -1; $this->forum_topics = -1; $this->key_words = ""; $this->owner_id = $owner_id; $this->title = $title; } } /** * Przypisuje identyfikator forum * * @access public * @param id Wartość przypisywana identyfikatora * @return true * @throws IllegalDataException **/ public function setForumId($id){ #sprawdz czy wartość zmiennej nie jest pusta oraz czy jest typu integer else { #gdy spełnione warunki zapisz zmienna $this->forum_id = $id; return true; } } /** * Przypisuje właściela do forum * * @access public * @param id id właścieciela forum * @return true * @throws IllegalDataException **/ public function setOwnerId($id){ #sprawdz czy wartość zmiennej nie jest pusta oraz czy jest typu integer else { #gdy spełnione warunki zapisz zmienna $this->owner_id = $id; return true; } } /** * Ustawia tytuł (nazwę) forum * * @access public * @param value Nowo nadawany tytuł forum * @return true * @throws IllegalDataException **/ public function setTitle($value){ #sprawdz czy wartość zmiennej nie jest pusta oraz czy jest typu integer else { #gdy spełnione warunki zapisz zmienna $this->title = $value; return true; } } /** * Ustawia opis forum * * @access public * @param value Nowo nadawany opis forum **/ public function setDescription($value=""){ $this->description = $value; } /** * Ustawia aktualną ilość postów znajdujących się na forum * * @access public * @param value Ilość aktualnych postów na forum **/ public function setForumPostNum($value=""){ $this->forum_posts = $value; } /** * Zwiększa o jeden aktualna ilość postów * * @access public **/ public function incForumPostNum(){ $this->forum_posts++; } /** * Zmniejsza o jeden aktualna ilość postów * * @access public **/ public function decForumPostNum(){ #zabezpieczenie przed tym by nie zmieniać liczy postów na ujemną if ($this->forum_posts != 0) $this->forum_posts--; } /** * Ustawia aktualną ilość wątków znajdujących się na forum * * @access public * @param value Ilość aktualnych wątków na forum **/ public function setForumTopicNum($value=""){ $this->forum_topics = $value; } /** * Zwiększa o jeden aktualna ilość wątków (tematów) * * @access public **/ public function incForumTopicNum(){ $this->forum_topics++; } /** * Zmniejsza o jeden aktualna ilość wątków (tematów) * * @access public **/ public function decForumTopicNum(){ #zabezpieczenie przed tym by nie zmieniać liczy postów na ujemną if ($this->forum_topics != 0) $this->forum_topics--; } /** * Tworzy forum * * @access public * @param id Identyfikator forum * @param owner_id iIdentyfikator moderatora forum ( * @throws IllegalDataException **/ public function createForumSQL($id, $owner_id){ else { $this->setSql("INSERT INTO rbx_forums" ." (id_forums, title, description, owner_id, forum_posts, forum_topics, key_wor
ds)" ." VALUES (".$id.", ".$this->title.", ".$this->description."," ." ".$this->owner_id.", ".$this->forum_posts.", ".$this->forum_topics.", ".$this->key_words.")"); $this->doSQL(); } } /** * Uaktualnia dane o forum * * @access public * @param $id Identyfikator forum * @throws IllegalDataException **/ public function updateForumSQL($id) { #sprawdz czy ustawiony jest id forum który będzie aktualizowany else { $this->setSql("UPDATE rbx_forums" ." SET" ." title = ".$this->title."," ." description = ".$this->description."," ." owner_id = ".$this->owner_id."," ." forum_posts = ".$this->forum_posts."," ." forum_topics = ".$this->forum_topics."," ." key_words = ".$this->key_words."," ." WHERE id_forums = ".$newid ." LIMIT 1"); $this->doSQL(); } } /** * Usuwa forum na którym aktualnie operujemy * * @access public * @throws SQLException * @throws IllegalDataException **/ public function deleteCurrentForumSQL(){ else { $this->setSql("delete from rbx_forums" ."WHERE id_forums=".$this->forum_id); $this->doSQL(); } } /** * Usuwa forum * * @access public * @param id Identyfikator forum do usunięcia * @throws SQLException * @throws IllegalDataException **/ public function deleteForumSQL($id){ else { $this->setSql("delete from rbx_forums" ."WHERE id_forums=".$id); $this->doSQL(); } } /** * Zwraca identyfikator forum * * @return forum_id identyfikator forum */ public function getForumId(){ return $this->forum_id; } /** * Zwraca identyfikator właściciela forum * * @return owner_id */ /** * Zwraca identyfialtor właściciela forum * * @return owner_id */ public function getOwnerId(){ return $this->owner_id; } /** * Zwraca tyttuł forum * * @return title */ public function getTitle(){ return $this->title; } /** * Zwraca opis forum * * @return description */ public function getDescription(){ return $this->description; } /** * Zwraca ilość postów na forum * * @return forum_posts */ public function getForumPostNum(){ return $this->forum_posts; } /** * Zwraca ilość tematów na forum * * @return forum_topics */ public function getForumTopicNum(){ return $this->forum_topics; } /** * @todo public function addModerator($id); //dodawanie moderetora * @todo public function deleteModerator($id); //usuwanie moderatora * @todo public function getModeratorList(); //zwracanie listy moderatorów * @todo public function getKeyWords(); //zwraca listę słów kluczowych * @todo public function setKeyWords($array); //dodawanie słów kluczowych * @todo public function deleteKeyWords($key); //usuwanie jednego ze słów kluczowych * @todo public function clearKeyWords(); //usuwa wszystkie słowa kluczowe * @todo public function clearModeratorList(); //usuwa wszystkich moderatorów * @todo wymyślić sposób na imlementację usuwania subforum, gdy usuwane jest for
um główne */ } ?>