[PHP] Nachteile / Vorteile statischer Klassenfunktionen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von myth2806, 12. September 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 12. September 2010
    Nachteile / Vorteile statischer Klassenfunktionen

    Hey,

    hab mal wieder eine kleine Frage zur Konzeptionierung von PHP-Skripten.
    Folgende Situation: Ich habe eine Klasse "foo", die in ihrer Form nicht lauffähig ist und erst durch eine Ableitung "bar1", "bar2" usw. und Implementierung einer abstrakten Methode lauffähig wird. Ausserdem wird das Singleton-Pattern erfüllt und die abgeleitete Klasse dementsprechend genau einmal instanziert. Nun hat die Klasse "foo" verschiedene Funktionen, die aus der zu implementierenden Funktion heraus nutzbar sein sollen.
    Die Frage ist jetzt, ob ich diese Funktionen statisch machen sollte oder nicht.
    Ich dachte, dass dadurch der Overhead etwas kleiner werden könnte... bin mir damit aber auch nicht sicher. Funktionieren würde beides aber ich will da jetzt grade mal ein bisschen Perfektionismus ausleben :lol:

    Grüße
     
  2. 12. September 2010
    AW: Nachteile / Vorteile statischer Klassenfunktionen

    wieso solltest du das machen? statische methoden sind dazu da, um sie zu verwenden ohne eine instanz der klasse zu erzeugen. wenn du aber sagt, dass eine methode immer implementiert werden muss, macht das doch keinen sinn, weil der object-context ja vorhanden ist.

    oder wolltest du dir die instanz sparen und die klasse komplett statisch machen?
    seit php-5.3 kannst du statische klassen genau so handlen wie instanzen, da alle statischen sachen nun ebenfalls zur laufzeit gebunden werden. (stichwort: late-static-binding). dazu gibt es seit php5.3 das neue/alte keyword "static"
    PHP:
    class  Foo
    {
        public static function 
    bar ()
        {
            static::
    baz (); 
            
    // würde man hier "self::" verwenden würde IMMER die eigene methode "bar" aufgerufen werden, weil
            // "self" immer auf die aktuelle klasse zeigt (wie __CLASS__)
            // mit "static::" wird zuerst in abgeleiteten klassen gesucht
        
    }

        protected static function 
    baz ()
        {
            print 
    1 ;
        }
    }

    class 
    Bar  extends  Foo
    {
        protected static function 
    baz ()
        {
            print 
    2 ;
        }
    }

    Foo :: bar ();  // 2
    der nachteil: statische funktionen können nicht abstrakt sein.
     
  3. 14. September 2010
    AW: Nachteile / Vorteile statischer Klassenfunktionen

    Hey,

    ja ich habe auch darüber nachgedacht, alles statisch zu machen.
    Meine Frage hat keinen handfesten Hintergrund... es ist wohl eher eine Stilfrage die ich hier stelle.
    Wie realisierst du denn einen Codeabschnitt, der nur in einer Instanz im Projekt gebraucht wird? Singleton oder statisch? Oder was ganz anderes?

    Danke
     
  4. 14. September 2010
    AW: Nachteile / Vorteile statischer Klassenfunktionen

    ja singleton bzw. factory-pattern. wenn rein logisch mehrere instanzen sinn machen auch mit nem registry-pattern.
     
  5. 14. September 2010
    AW: Nachteile / Vorteile statischer Klassenfunktionen

    OK das wars doch was ich wissen wollte.

    Danke dir
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.