Klasse mehrmals verwenden

Daaguru

Erfahrenes Mitglied
Hallo Tutorials.de Community,

wie verwende ich eine Klasse mehrmals im Script?

Ich habe eine MySQL Klasse und auf derselben Seite zwei weitere Klassen welche sich an der MySQL Klasse bedienen.

Wenn ich jetzt mit der ersten Klasse auf die msql Klasse zugreife und später die zweite Klasse auf die msql Klasse zugreift erhalte ich folgenden Fehler:

Fatal error: Cannot redeclare class mysql in D:\Programme\EasyPHP\www\gehlings\system\class\mysql_class.php on line 3

Wie greife ich aber auf die Klasse zu? Habe ich so nicht zwei unterschiedliche Instanzen erzeugt?

PHP:
class mysql {
   function query($var) {
        doQuery->$var;
   }
}

class rating {
   $sql1= new mysql;
   $sql1->query("INSERT INTO...");
}

class rating2 {
   $sql2= new mysql;
   $sql2->query("INSERT INTO...");
}

~daA|guRu~
 
Das Code-Snippet enthält keine Fehler.

Ich vermute mal, dass du bei deinem Script die MySQL-Klasse in einer eigenen Datei hast und diese jedesmal, wenn du die MySQL-Klasse benötigst, mit [phpf]include[/phpf] oder [phpf]require[/phpf] einbindest.
Diese Funktionen führen den Code in der Datei jedesmal aus und versuchen dabei, die MySQL-Klasse jedesmal zu definieren, was natürlich ab dem 2. Mal fehlschlägt.

Lösung:
[phpf]include_once[/phpf] bzw. [phpf]require_once[/phpf] verwenden.
 
Hi,

wenn du die Funktionalität von einer bestimmten Klasse weiter verwenden willst, solltest du wenn möglich extenden und nicht die eine Klasse in der anderen initiieren.

So wie du das machst hat es keinen Vorteil gegenüber einer Funktion.

PHP:
class mysql {
   function query($var) {
        doQuery->$var;
   }
}

class rating extends mysql{
   $this->query("INSERT INTO...");
}

class rating2  extends mysql{
   $this->query("INSERT INTO...");
}


Gruß

.:lay-z-cow:.
 
Es hat funktioniert vielen Dank!!

Das Problem hat Nilix erkannt.
Mit require_once() konnte ich das Problem beheben.

Das gute daran, somit konnte ich die mysql Klasse auch wieder erweitern,
wie lay-z-cow schon erwähnt hatte.

Danke nochmal.

~daA|guRu~
 
Zurück