Markus: Variablenübergabe in Klassen und Funktionen

Hallo zusammen,

ich habe mich heute mal mit der Programmierung von Klassen in PHP beschäftigt. Und siehe da, es funktioniert sogar. Aber eine Frage hätte ich trotzdem:

Meine Klasse hat mehrere Funktionen. Einige dieser Funktionen greifen auf eine Datenbank zu. Die Datenbank-Verbindungsdaten liegen in einer "db_init.php"-Datei, die über "include" eingebunden wird.

Meine Frage: Ich "include" diese db_init-Datei in jeder Funktion der Klasse, um eine Verbindung mit der DB zu ermöglichen. Kann ich sie nicht nur einmal im "Kopf der Klasse" einbinden?

Häh? Okay, vielleicht ist die Erklärung besser?

Variablen (db_name, db_user, etc.), die ich außerhalb einer Klasse definiert und gefüllt habe, kann ich ja innerhalb der Klasse nicht verwenden. Oder gibt es da doch einen Weg?

Wenn nicht, wie kann ich am Anfang einer Klasse Variablen so anlegen, daß diese innerhalb der Funktionen der Klasse nutzbar sind?

Ich möchte einfach nicht an tausend Stellen das gleiche "include" nutzen.

Vielen Dank für Eure Hilfe,

Markus

  1. ich habe mich heute mal mit der Programmierung von Klassen in PHP beschäftigt. Und siehe da, es funktioniert sogar.

    Klassen verwendet man nicht einfach so, weil es schick ist, sondern weil man Objekte mit bestimmten Eigenschaften (so nennt man die Klassen-Variablen) und Methoden (so heißen die Funktionen innerhalb von Klassen) programmiertechnisch nachbilden möchte.

    Meine Klasse hat mehrere Funktionen. Einige dieser Funktionen greifen auf eine Datenbank zu.

    Eierlegende Wollmilchsäue sind nicht das Ziel von objektorientierter Programmierung.
    Dieser Ansatz sieht mir nicht ganz richtig aus. Wenn du es "richtig" machen willst, solltest du die Datenbankzugriffe in eine eigene Klasse auslagern. Diese DB-Klasse muss selbständig alles wissen, wie sie den DB-Zugriff zu erledigen hat. Benötigte Verbindungsparameter  können ihr dazu im Konstruktor übergeben werden oder der Konstruktor ruft eine Methode auf, die sich diese Daten holt.
    Diese Daten kannst du dann den Eigenschaften der Klasse speichern und in jeder Methode darauf zugreifen.

    Das ganze kann man noch beliebig verfeinern, aber darauf gehe ich jetzt nicht ein, weil ich denke, dass es dich als "Erstklässler" :-) möglicherweise überfordert. (An dieser Stelle habe ich nichts dagegen, wenn ich mich diesbezüglich irren sollte...)

    Und wenn du dir die ganze Arbeit mit der DB-Klasse gleich ganz sparen willst, dann schau dir mal das PEAR-Package DB an.