OOP mit extends und Variablenübergabe

measel101

Mitglied
Ich finde es erstaunlich, dass selbst bei ~9000 Theads nur 13 dabei sind, in denen der Begriff "extends" verwendet wird.

Mein jetztiges Problem sind jetzt nicht die Methoden, die ich von der 1. Klasse in die 2. übernommen habe, sondern, wie ich die in eins belegten Variabeln in zwei bekomme?

Hier meine erste Klasse (verkürzt, sollte aber vom Sinn her funktionieren):
PHP:
class Db 
{ 
    var $_status = 0; 

    function Db() 
    { 
        if (!@mysql_connect('localhost:3306', 'root', '')) { 
            $this->error(mysql_error(), mysql_errno()); 
        } else { 
            if (!@mysql_select_db('qrt3')) { 
                $this->error(mysql_error(), mysql_errno()); 
            } else { 
                $this->_status = 1; 
            } 
        } 
    } 
//[...]

Im Prinzip wird hier nur eine Verbindung mit meiner mySQL Datenbank aufgebaut - klappt auch wunderbar, deswegen wird $_staus bei Erfolg auch auf 1 gesetzt.

Wenn ich jetzt in der index.php $DB = new Db und echo $DB->_status schreibe, erhalte ich auch meine 1 - Verbindung steht.

Aber, wenn ich jetzt meine 2. Klasse aufrufe:
PHP:
class module extends Db 
{ 
    function module() 
    { 
        echo $this->_status; 
    } 
}
... erhalte ich eine 0. Meine Frage: Wieso?

Hier noch ein Ausschnitt aus meiner index.php, damit auch alle wissen, wie ich die eingebunden habe, etc.
PHP:
require_once('./inc/db2.class.php');
require_once('./inc/module2.class.php');

$DB = new Db; 
echo 'meine verbindung ist: '.$DB->_status; 

$test = new module;

Also, was ich nicht verstehen möchte, ist das einerseits meine Methoden aus der 1. Klasse in die 2. übernommen werden, anderseits die bereits belegten Variablen nicht übernommen werden.

Ich bin für jede Idee dankbar ;)

*EDIT

Ok, soweit ich das selbst beurteilen kann, wird bei "extends" die Basis Methode (die Methode, die den selben Namen trägt wie die Klasse (hab den Fachbegriff dafür vergessen :/)) nicht mit aufgerufen. Die Methoden werden "nur" mit eingebunden und das wars. Mit andren Worten, ich muss die Basis Methode von eins in der zweiten Klasse einfach mit $htis->methode() aufrufen und fertig.

*Edit 2:

Ich kanns mir nicht erklären, aber mit Db::query und extends klappts... :>
 
Zuletzt bearbeitet:
Zurück