Od jakiegoś czasu próbuję opanować OOP w PHP i idzie mi, nie przymierzając, słabo. Mój problem polega na tym, że nie potrafię z jednej klasy odwołać się do metod innej. Nie wiem, czy to nie jest przypadkiem durnota jakaś i mój błąd w próbie myślenia obiektowo... proszę o pomoc w każdym bądź razie.
Mam klasę MySqlEng(). Konstruktor tej klasy tworzy połączenie z bazą danych i zapisuje uchwyt połączenia w prywatnej zmiennej klasy. Dalej mam 4 metody: selectQuery, updateQuery, insertQuery i deleteQuery, które przygotowują w prywatnej zmiennej $query string, który metodzie doQuery() służy do wykonania odpowiedniego zapytania w bazie danych. Dochodzi jeszcze metoda fetchResults(), która pozwala na przewijanie rekordów uzyskanych w odpowiedzi na zapytanie.
Standardowo używam tej klasy tak:
<?php $sql = new MySqlEng(); $sql -> selectQuery('nazwa, ilosc', 'produkty', 'id > 93'); while($res = $sql->fetchResults()) { } ?>
Próbuję teraz złożyć klasę pagesSupport(), której zadaniem będzie: dodawanie stron do bazy danych, ich edycja i zmiana, oraz wyciągnie z bazy danych o odpowiedniej podstronie i wyswietlanie jej na ekranie. Zwykłe użycie wewnątrz metody tej klasy metody $sql->selectQuery() wywołuje błąd...
Jak skorzystać z klasy MySqlEng() wewnątrz klasy pagesSupport()

Podaję też kod klasy MySqlEng():
<?php //config //this data should be inserted in another file, which is not available by http:// class MySqlEng { private $handler; public $query; private $results; private $affected_rows; private $last_row_id; private $selected_rows; public function __construct() { { throw new Exception('Problem z połączeniem do bazy danych.<br />Nr błędu: <b>'.mysql_errno().'</b><br /><b>Komunikat: </b>'.mysql_error()); } else { throw new Exception('Problem z wybraniem bazy danych.<br />Nr błędu: <b>'.mysql_errno().'</b><br /><b>Komunikat: </b>'.mysql_error()); else { //connection successfull: $this->handler = $sql_handler; } } } //next four methods create sql query for doQuery method; public function selectQuery($fields, $table, $where = "", $order = "", $limit = "") { //if is another query saved: //creating query for doQuery() method $this->query = 'SELECT '.$fields.' FROM '.$table; if($where) $this->query .= ' WHERE '.$where; if($order) $this->query .= ' ORDER BY '.$order; if($limit) $this->query .= ' LIMIT '.$limit; $this->doQuery(); } TUTAJ SĄ JESZCZE TRZY METODY DO USTAWIANIA ZMIENNEJ QUERY... (updateQuery, deleteQuery, insertQuery) //here is private method which will really make operations in db. it gets no arguments - all are written in object properties. private function doQuery() { { throw new Exception('Problem z wywołaniem zapytania do bazy danych.<br />Nr błędu: <b>'.mysql_errno().'</b><br /><b>Komunikat: </b>'.mysql_error()); } } public function fetchResults() { if($this->results) { { return $this->records; } } } public function getAffectedRows() { return $this->affected_rows; } public function getSelectedRows() { return $this->selected_rows; } public function getLastRowId() { return $this->last_row_id; } public function __destruct() { } } ?>