mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 07:29 Benutzername: Passwort: Auto-Login

Thema: [php] Klassen untereinander verwenden vom 21.06.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [php] Klassen untereinander verwenden
Autor Nachricht
last_breath
Threadersteller

Dabei seit: 08.07.2004
Ort: Bonn
Alter: 44
Geschlecht: Männlich
Verfasst Di 21.06.2005 12:16
Titel

[php] Klassen untereinander verwenden

Antworten mit Zitat Zum Seitenanfang

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!
  View user's profile Private Nachricht senden
Account gelöscht


Ort: -
Alter: -
Verfasst Di 21.06.2005 12:41
Titel

Antworten mit Zitat Zum Seitenanfang

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
Anzeige
m0rb

Dabei seit: 30.09.2004
Ort: Fürth
Alter: 38
Geschlecht: Männlich
Verfasst Di 21.06.2005 13:19
Titel

Antworten mit Zitat Zum Seitenanfang

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 Lächel[/code]
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Sarky

Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht: Männlich
Verfasst Di 21.06.2005 13:38
Titel

Antworten mit Zitat Zum Seitenanfang

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();
  View user's profile Private Nachricht senden
Dr.Schmidt

Dabei seit: 26.07.2005
Ort: Frankfurt
Alter: -
Geschlecht: Männlich
Verfasst Di 26.07.2005 15:45
Titel

Antworten mit Zitat Zum Seitenanfang

Hi,

sorry für die Beitragsübernahme Meine Güte! 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..)
  View user's profile Private Nachricht senden
Dr.Schmidt

Dabei seit: 26.07.2005
Ort: Frankfurt
Alter: -
Geschlecht: Männlich
Verfasst Di 26.07.2005 15:52
Titel

Antworten mit Zitat Zum Seitenanfang

* Ich geb auf... * 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
  View user's profile Private Nachricht senden
 
Ä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?
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.