Klassen
hans
- php
Servus,
ich habe hier eine User Klasse:
class user
{
private $db;
public function __construct($db)
{
$this->db= clone $db;
}
public function foo()
{
echo "bar";
}
}
Dieser Klasse wird eine Datenbankklasse übergeben.
So nun bin ich in einer anderen PHP-Datei:
include("./user.class.php");
user::foo();
Würde jetzt aber die Funktion foo() die Datenbankklasse in der Klasse user
benutzen wollen geht das nicht, da ich sie der Klasse nicht übergeben habe.
So nun meine Frage: Wie übergebe ich dieser Klasse user noch die Datenbanklasse, die z.B. $db heißt?
Danke im Vorraus
Hans
Servus,
ich habe hier eine User Klasse:
class user
{
private $db;
public function __construct($db)
{
$this->db= clone $db;
}
public function foo()
{
echo "bar";
}
}Dieser Klasse wird eine Datenbankklasse übergeben.
So nun bin ich in einer anderen PHP-Datei:
include("./user.class.php");
user::foo();Würde jetzt aber die Funktion foo() die Datenbankklasse in der Klasse user
benutzen wollen geht das nicht, da ich sie der Klasse nicht übergeben habe.
So nun meine Frage: Wie übergebe ich dieser Klasse user noch die Datenbanklasse, die z.B. $db heißt?Danke im Vorraus
Hans
Soweit ich das verstanden hab, musste die Instanz $db einfach in die Klasse laden.
class user
{
public $db;
}
$dieser_user = new user();
$dieser_user->db = $db;
und schon kannste in der user Klasse mit $this->db auf die Instanz $db "zugreifen".
HF & GL
T-Rex
Genau, da liegt mein Problem,
geht es auch ohne Instanzbildung.
Hopsel: was fehlt mir noch?
Hans
Hi hans!
Genau, da liegt mein Problem,
geht es auch ohne Instanzbildung.
Hopsel: was fehlt mir noch?
Du musst doch eine Instanz bilden. Ob von einer abgeleiteten Klasse oder direkt von der Klasse selbst, ist dabei egal.
Wie schon gesagt: Meiner Meinung nach hast du ein anderes Problem. Wo merkst du, dass du auf $db nicht zugreifen kannst?
MfG H☼psel
Hi hans!
Wie schon gesagt: Meiner Meinung nach hast du ein anderes Problem. Wo merkst du, dass du auf $db nicht zugreifen kannst?
Wahrscheinlich versuchst du in einer abgeleiteten Klasse darauf zuzugreifen. dafür müsstest du dieser Klasse aber Zugriff auf $db erlauben.
Da wäre private
aber der falsche Spezifizierer. Versuchs mal mit protected
.
MfG H☼psel
Genau, da liegt mein Problem,
geht es auch ohne Instanzbildung.Hopsel: was fehlt mir noch?
Hans
Ohne Instanzbildung?
Dann wäre Vererbung das Stichwort!
Hier ist eine ganz kurze Anleitung. http://www.devmag.net/webprog/php_oop_4.htm
Gruß und so
T-Rex
Hi hans!
Würde jetzt aber die Funktion foo() die Datenbankklasse in der Klasse user
benutzen wollen geht das nicht, da ich sie der Klasse nicht übergeben habe.
Das geschieht doch bei der Instanzbildung.
So nun meine Frage: Wie übergebe ich dieser Klasse user noch die Datenbanklasse, die z.B. $db heißt?
Bei der Instanzbildung.
Du scheinst aber ein anderes Problem zu haben. Welches?
MfG H☼psel
echo $begrüßung;
ich habe hier eine User Klasse:
Dieser Klasse wird eine Datenbankklasse übergeben.
Vielleicht kommst du günstiger, wenn du die Sache andersrum angehst. Die Datenbankklasse könnte eine Instanz ihrer selbst per Singleton-Pattern (meist reicht ja eine Verbindung) oder per Factory-Pattern (wenns doch mehrere einzelne Instanzen sein sollen) an andere auf Anforderung rausgeben.
echo "$verabschiedung $name";