Autor |
Nachricht |
last_breath
Threadersteller
Dabei seit: 08.07.2004
Ort: Bonn
Alter: 44
Geschlecht:
|
Verfasst Di 21.06.2005 12:16
Titel [php] Klassen untereinander verwenden |
|
|
Tag zusammen,
folgende Situation: Ich habe einige Klassen mit denen ich arbeite, unter anderem die Klasse für MySQL.
Nun stelle ich es mir sehr praktisch vor, wenn ich beim Aufbau einer anderen Klasse in der irgendwelche Daten verarbeitet
werden, auf die "DB"-Klasse zugreifen könnte. Mache ich das mit der Vererbung der Klassen? Demnach müßten dann ja dann meine anderen Klassen die DB-Klasse erweitern, oder irre ich?
Mal ein praktisches Beispiel, ich erzeuge mit der GD-Bibliothek Statistiken von diversen Zugriffen. Ich habe also einfach gesagt drei Dateien, eine Datei mit der DB-Klasse, eine mit der Verarbeitung der Daten und Erzeugung der Grafiken und eine Datei in der ich auf die DB-Klasse zugreife um die Daten aus der Datenbank zu holen und an die Klasse zur Erzeugung der Grafiken weiter zu geben. Ich finde es unelegant und einen Schritt zu viel....habt Ihr Tipps für mich?
Dank Euch!
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Di 21.06.2005 12:41
Titel
|
|
|
Verstehsch net so richtig. Du kannst doch Objekte schon seit php3 beliebig kopieren bzw. referenzieren.
Code: | class machBild {
var $db;
function machBild() {
$this->db = &new DB;
}
function xy() {
}
}
class DB {
[...]
}
$machBild = &new machBild;
|
PHP5 bietet da mittlerweile noch mehr Möglichkeiten. Ich hab hier mal auf Anhieb was ergooglet:
http://www.professionelle-softwareentwicklung-mit-php5.de/erste_auflage/index.html
Zuletzt bearbeitet von am Di 21.06.2005 12:46, insgesamt 1-mal bearbeitet
|
|
|
|
|
Anzeige
|
|
|
m0rb
Dabei seit: 30.09.2004
Ort: Fürth
Alter: 38
Geschlecht:
|
Verfasst Di 21.06.2005 13:19
Titel
|
|
|
Ich versteh dein Problem leider auch net wirklich...
Suchst du vielleicht das Wörtchen "extends"?
Damit könntest du folgendes machen:
Code: |
class SQL {
var $abc;
function bla() {
....
}
...
}
class Stat extends SQL {
var $xyz;
function blubb() {
return $this->bla();
}
...
}
|
d.h. du verbindest sozusagen die beiden Klassen zu einer, ohne direkt in der SQL-Klasse irgendwas ändern zu müssen...
Ob dir das weiterhilft weiss ich allerdings nicht [/code]
|
|
|
|
|
Sarky
Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht:
|
Verfasst Di 21.06.2005 13:38
Titel
|
|
|
Hm... also ich glaube, er möchte einfach ein bereits bestehende Instanz eines Objekts in einer anderen Klasse weiterverwenden.
Bei einem Datenbankzugriff über eine Klasse würde ich da der anderen Klasse einfach eine Referenz zur entsprechenden Instanz im Konstruktur übergeben.
Code: |
class Database
{
}
class Foo
{
var $db;
function Foo(&$db)
{
$this->db = &$db;
}
function Test()
{
$this->db->query();
}
}
$db = new Database();
$Bar = new Foo(&$db);
$Bar->Test();
|
|
|
|
|
|
Dr.Schmidt
Dabei seit: 26.07.2005
Ort: Frankfurt
Alter: -
Geschlecht:
|
Verfasst Di 26.07.2005 15:45
Titel
|
|
|
Hi,
sorry für die Beitragsübernahme bin gerade auf diesen Beitrag bzw. dieses Forum über google Aufmerksam geworden, da ich gerade vor der gleichen Fragestellung stehe...
Zitat: |
Hm... also ich glaube, er möchte einfach ein bereits bestehende Instanz eines Objekts in einer anderen Klasse weiterverwenden.
|
Genau das will ich (auch) machen. Allerdings würde ich ungern wie in deinem Beispiel beim Aufruf der Klasse die ganzen anderen Klassen schon mit übergeben müssen. (zumal ich bei Änderungen dann immer alle meine scripte Durchgehen müsste). Kann ich eine solche Referenz auch global verfügbar machen?
Vielen Dank (und sorry noch mal dass ich mich in deinen Beitrag eingemischt habe last_breath hoffe, meine Frage ist auch in deinem Interesse..)
|
|
|
|
|
Dr.Schmidt
Dabei seit: 26.07.2005
Ort: Frankfurt
Alter: -
Geschlecht:
|
Verfasst Di 26.07.2005 15:52
Titel
|
|
|
beim Absenden des Beitrags ist mir aufgefallen wie bl*d er ist...
... für die Nachwelt: einfach im Konstruktor der Klasse z. B.:
Code: |
class xy {
var $db;
function xy {
global $db;
$this->db = &$db;
}
}
|
Mit dem Schalter BRAIN = ON gehts doch gleich viel einfacher *g*
Gruß
Zuletzt bearbeitet von Dr.Schmidt am Di 26.07.2005 15:53, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
CSS: links in klassen definieren -pseudoklassen in klassen?
PDFs untereinander verlinken
[CSS] Boxen untereinander floaten
CSS - Navigationen untereinander (z-index)
Daten aus Datenbank untereinander ausgeben
Höhenvariable Frames passend untereinander?
|
|