Einzelnen Beitrag anzeigen
Alt 24.08.2004, 14:19  
UniQ
Neuer Benutzer
 
Registriert seit: 08.08.2004
Beiträge: 10
UniQ
Standard

Naja hast schon recht, ich meinte Objekte

Aber bei meinen "Problem" bin ich immernoch nicht weiter
Ich hol am besten mal richtig aus.

Es geht um eine Vereins-Klasse, die Daten zum Verein aus einer Datenbank lädt.
Jetzt haben sich aber ein paar Leute zusammengesetzt und beschlossen das es auch Spielgemeinschaften gibt.
Also hab ich mir gedacht, mach ich doch dafür eine Spielgemeinschaft-Klasse , die von der Vereinsklasse abgeleitet ist.

Code:
<?php

class Verein
{

    function Verein ($vereinsnummer)
    {
    }

}

?>
Code:
<?php

class Spielgemeinschaft extends Verein
{

    function Spielgemeinschaft ($vereinsnummer)
    {
    }

}

?>
Ob das Objekt nun ein einfacher Verein ist oder eine Spielgemeinschaft hängt von der Vereinsnummer ab.

Da ich nicht immer, wenn ich ein Vereins-Objekt erzeuge, explizit prüfen will ob das nun eine Spielgemeinschaft ist, wollte ich das irgendwie automatisch machen.

Deshalb wollte ich halt einfach ein Vereins-Objekt erstellen, das bei Bedarf zu einen Spielgemeinschaft-Objekt mutiert.

Wenn ich immer die Spielberichtsklasse nehme funktioniert das auch nicht, weil Methoden der Vereinsklasse überschrieben werden!

Deshalb sehe ich jetzt 2 Möglichkeiten:
  • Ich erweitere die Vereinsklasse um eine statische Methode, die mir automatisch das richtige Objekt zurückliefert.
    Code:
    function getClub()
    {
        ...
        return $club;
    }
    
    find ich nicht so toll in der Handhabung, aber sicher am einfachsten

  • Ich prüfen bei allen Methoden, die die Spielgemeischaft-Klasse überschreiben würde, ob es sich um eine Spielgemeinschaft handelt und führe dann den entsprechenden Code aus.
    Code:
    function criticalMethod()
    {
        if (isSpielgemeinschaft()) {
            [Spielgemeinschaft-Code]
        } else {
            [Verein_Code]
        }
    }
    
    etwas unübersichtlicher Code

Hat jemand andere Vorschläge, oder eine Meinung welche Variante besser ist

Danke schonmal!
UniQ ist offline