Gewusst wie: Methoden von Klassen miteinander kombinieren

X-Color

Erfahrenes Mitglied
Hallo,
ich hab eine Frage bei der OOP, wenn ich zu dem Punkt komme Methoden auszuführen, die schon in einem anderem Objekt vorhanden sind.

Folgendes Beispiel:
Ich hab eine Klasse Mitarbeiter mit der Methode getMitarbeiter($id) die mir alle Attribute des Mitarbeiters mit $id aus der Datenbank lädt.
An anderer Stelle existiert die Klasse Projekte, die eine Methode enthält getProjekte() und zu den Projekten gehören beliebig viele Mitarbeiter, die mit ausgegeben werden sollen.

Jetzt wäre mein Weg folgender: Für die Methode getProjekte() würde ich 2 SQL-Abfragen schreiben, welche mir die Projekte und danach die jeweiligen Mitarbeiter zu jedem Projekt lädt.
Das wäre natürlich mehr aufwand und redundanter Code, da in der Klasse Mitarbeiter schon eine Passende Methode definiert ist...

Sollte ich nun in der Methode getProjekte() die Methode Mitarbeiter::getMitarbeiter() (in dem Fall wohl eine Statische Methode) aufrufen, auch wenn diese mir evtl. mehr informationen liefert, als ich eigentlich benötige?
Zur folge hätte ich Projekte und Mitarbeiter in 2 verschiedenen Arrays und müsste Sie dann zuerst noch zusammenführen...

Wie wird das eurer Meinung am elegantesten gelöst?
Danke für eure Hilfe,

Gruß Gerrit
 
Der 2. Weg ist auf jeden Fall der OOP Mäsige. Wenn Mitarbeiter::getMitarbeiter() Objekte zurückliefert. Dort hast sind dann eben wieder bekannte Methoden verfügbar. Und ggf. noch doch noch andere Informationen lesen.

Wenn in Klassen Informationen sind die selten benötigt werden und aufwenig zu generieren sind würde ich sie nicht immer alle einlesen lassen sondern die calls abfangen und onDemand einlesen über die magic funktion _call() oder über eine entsprechende Funktion.
 
Okay. also ich stelle es mir egrade so vor und hoffe das ich richtig liege, ansonsten korrigiert mich bitte:

Ich schreibe meine Abfrage, die mir alle Projekte als Objekt in einem Array liefert.
Nun rufe ich die Methode Mitarbeiter::getMitarbeiterByProjektId($id) in einer Schleife für jedes Projekt auf, die mir ein ebenso ein Array aus Objekten der Mitarbeiter zurückliefert.
Diese Objekte werden wiederrum in einem Array der Klasse Projekt abgelegt wird.

Jetzt hab ich ein Array mti Projekt-Objekten und ein Array mit MitarbeiterProjekten, die ich nochmals zusammenfügen muss...

Uff...richtig? :-)
 
Mag mir jemand bitte noch mein nachhaken bestätigen/korrigieren?

Vielen Dank...
Gruß Gerrit
 
Zuletzt bearbeitet:
Zurück