[PHP] Mit Klassen aufeinander zugreifen
-
also ich habe 2 klassen. eine datenbank klasse und eine andere.
wie kann ich jetzt in der 2. klassen auf die funktionen der datenbank klasse zugreifen?
es geht zwar mit extends aber das ist ned so gut weil sie ja eigentlich die db-klasse nicht erweitert...
kann ich die klasse irgendwie so global setzten das es geht?
also zb.
$db = new database;; $seite = news seite; // irgendwo in einer funktion der klasse seite: $db->query("...");
-
Es gibt mehrere Möglichkeiten: du kannst $db z.B. einfach an die Funktion übergeben, oder du gibst $db beim Erzeugen der seite-Instanz an und speicherst es in einer Member-Variablen, oder du machst in der Funktion mit global $db; die database-Instanz sichtbar
-
wie sieht das dann aus?
class seite { gloabal $db; }
oder wie?
-
Hab es nicht getestet, aber eigentlich müsste das an den Anfang des Funktions-Rumpfes, innerhalb der du $db benötigst (also die seite-Member-Funktion)
-
Warum müsstest du mit extends die Datenbankklasse erweitern?
-
Lutz schrieb:
Warum müsstest du mit extends die Datenbankklasse erweitern?
so kann ich die funktionen der datenbank klasse auch nutzten.
also mit global gehts ned.
wie kann ich einem konstruktor paramter mitgeben?
etwas so?
$seite = new seite($db);
-
hmm ich weiß nicht, ob es für deine zwecke sinn macht.. aber als member ginge es auch, und die instanz erstelle ich im konstruktor (noch php4, in php5 würde ich es anders machen)
<?php class DataBase { //constructor function DataBase() { //testausgabe echo "test"; } } class Foo { var $data; //constructor function Foo() { $data=&new Database(); } } $myFoo=&new Foo(); ?>
ps: wenn du dem konstruktor anstatt eines members einen parameter übergeben willst, machst du es oben richtig