OOP - PHP Klassen und Vererbung (extends) ...

  • Will mal hier nen thread starten, bei dem es einfach nur darum geht darüber zu Diskutieren,
    ob man was richtig verstanden hat, oder halt nicht.
    Gerade bei OOP in Sachen Vererbung kann man schnell mal den Überblick verlieren.


    Hier mal interessant, dass Konstanten (auch Funktionen und Eigenschaften) geerbt werden können,
    aber dennoch jede Klasse seine eigene Variante mit dem exakt gleichen Namen haben kann:


    Jemand btw ne Idee, wie man aus der dritten Klasse die Konstante der Ersten ansprechen könnte?
    Also Ohne den Namen (Mensch::) dabei zu nutzen?

  • So, und jetzt gibt mal was für frischen Fasching im Kopf!
    =)


    Was is das:
    Eine Klasse "CallBack" als Hauptklasse, welche die Functionen für eine Callback-Funktion bereit stellt.
    Eine Andere Klasse kann also sich selbst um diese Klasse (und ihre Methoden) erweitern.


    Sinn dahinter:
    dynamisches arbeiten mit Klassen (weniger stumpfe Skriptabläufe).
    Die "Eine" Klasse fragt einfach bei der "Anderen" nach, ob sie denn schon bereit ist.
    Ist das nicht der Fall, wird diese "Eine" Klasse zurückgerufen, sobald die "Andere" Klasse ihr "ok" gibt (also bereit ist).
    Momentan nur mit/für static Methoden getestet/gedacht. Bin zwar grad nicht wirklich frisch, aber sollte überall laufen.


    Hier das Bsp/der Code (sieht schlimm aus, aber ist es eigtl gar nicht =)


    EDIT: Methoden der Klasse "CallBack" mit "final" versehen. Dadurch ist es einer Kindklasse nicht möglich diese zu überschreiben.
    Ohne dem Zusatz "final" könnte man in einer Kindklasse auch eine Methode execRegistered() erstellen.
    Bei einem "versehentlichen" Aufrufen per self::execRegistered(); (also self andstatt parent) würde man die eigene Methode anstoßen.
    Mit "final" ist es also einer Kindklasse nicht mehr möglich eine Methode mit diesen Namen zu erstellen.

    Zitat

    Fatal error: Cannot override final method CallBack::execRegistered() in ...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!