Mam prosta klase mysql, w ktorej fragment jest nastepujacy:
<?php class mysql { // nazwa hosta var $host = ''; // nazwa uzytkownika bazy danych; var $uzytkownik = ''; // haslo uzytkownika bazy danych var $haslo = ''; // nazwa bazy danych var $baza = ''; // oznaczenie polaczenia trwalego var $trwale = ''; // id polaczenia z baza danych var $polaczenie = NULL; // wynik wykonanego zapytania; var $wynikZapytania = false; $this->host = $host; $this->uzytkownik = $uzytkownik; $this->haslo = $haslo; $this->baza = $baza; $this->trwale = $trwale; } /** * @desc Metoda otwierajaca polaczenie z baza danych * * @return true - nawizano polaczenie z systemem MySQL * @return false - polaczenie z MySQL nie zostalo nawiazane */ function polaczenieOtworz() { if ($this->trwale) $funkcja = 'mysql_pconnect'; else $funkcja = 'mysql_connect'; $this->polaczenie = @$funkcja($this->host, $this->uzytkownik, $this->haslo); if ($this->polaczenie) { return true; else { return false; } } else return false; } /** * @desc Zamkniecie polaczenia z baza danych */ function polaczenieZamknij() { } /** * @desc Wyslanie zapytania do serwera mysql */ function zapytanieWyslij($zapytanie = '') { } /** * @desc Zwrocenie ilosci przetworzonych wierszy przy ostatniej operacji */ function zapytanieAffected() { } /** * @desc Pobranie wygenerowanego numeru id przy ostatnim zapytaniu (INSERT) */ function pobierzId() { } } ?>
Teraz zakladam, ze w moim projekcie bedzie co najmniej kilka innych klas (np. wiadomosci, komentarze, itd). Chcialem sie zapytac w jaki sposob moge korzystac w innych klasach z medot udostepnianych przez klase mysql (pod podstawowymi metodami klas np. wiadomosci bedzie dodawanie, usuwanie wiadomosci przez co musze w tym momencie korzystac z bazy danych). Wiem, ze moge zrobic to poprzez dziedziczenie:
<?php // zaladowanie biblioteki mysql require_once('mysql.class.php'); { // Numer id wiadomosci var $wiadomosci_id; // konstrukcja zapytania var $zapytanie; function wiadomosci() {} /** * @desc Dodanie nowej wiadomosci */ function dodajWiadomosc($wiadomosc_temat, $wprowadzenie, $publikacja, $uzytkownik_id) { // nawiazanie polaczenia z systemem zarzadzania baza danych $bd->polaczenieOtworz(); // dodanie nowego rekordu do tabeli wiadomosci $this->zapytanie = ' INSERT INTO wiadomosci (wiadomosc_temat, wiadomosc_wprowadzenie, wiadomosc_publikacja) VALUES (\"'. // wyslanie zapytania $bd->zapytanieWyslij($this->zapytanie); // pobranie numeru identyfikujacego wiadomosc $this->wiadomosc_id = $bd->pobierzId(); // sprawdzenie, czy zostal pobrany numer id wiadomosci if ($this->wiadomosc_id > 0) { // dodanie danych do tabeli 'uzytkownicy_wiadomosci' uzytkownicy_wiadomosci VALUES ('. // wyslanie zapytania $bd->zapytanieWyslij($this->zapytanie); if ($bd->zapytanieAffected()) return true; else return false; } }// koniec dodajWiadomosc() } ?>
- jednak co sie stanie gdy bede chcial w innej klasie skorzystac z metod dostepnych w klasie mysql i wiadomosci. Z tego co wiem to nie ma mozliwosci dziedziczenia wielokrotnego w php4.
Czy wyzej zaprezentowane postepowanie jest sluszne... prosze o komentarze.
Dzieki za informacje.
mhs