Witaj,
mam problem z odwołaniem się do klasy. Pojawia się mi cały czas poniższy komunikat:
Fatal error: Using $this when not in object context
Wiem, że to jest problem z odwołaniem się do funkcji, ale za bardzo nie rozumiem dlaczego pojawia się ten błąd. Mam klase odpowiedzialną za poł. z bazą, wygląda ona tak:
protected $db = '';
public function __construct() {
try {
$this->db = new PDO('mysql:host=' . DB_HOST . '; dbname=' . DB_NAME . ';', DB_USER, DB_PASS);
} catch( PDOException $e ) {
print_r( $e->getMessage() );
}
}
public function database( $param ) {
......
}
I teraz z innej klasy chcę wywołać metodę database. Plik wygląda tak:
require_once('./DB.class.php');
class user{
protected $db;
public function __construct() {
$this->db = new DB();
}
public static function signIn( $login, $pass ) {
// $db = new databaseManager();
$sql = '';
$query = $this->db->database( $sql );
W tej wersji kodu pojawia mi się wspomniany komunikat, wiem, że on się pojawia jak się np. metodę statyczną wywołuje przez $this. Ale metoda "database" nie jest statyczna, więc powinienem korzystać z "this". Jednak w tym przypadku nie działa konstruktor. Nie wiem dlaczego. Czy możesz mi pojaśnić co robię źle?
PS. Jak w metodzie signIn odkomentuję $db i zmienię $query na "$query = $db->database(...);" to wszystko działa. Z tym, że nie chcę w każdej metodzie tworzyć instancji DB, bo chyba nie o to chodzi w OOP ;-)