PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

PHP 5 Konstruktor unter PHP 4 einsetzen

Abwärtskompatible Bibliotheken und Applikationen sind in PHP in Zeiten des Umbruchs immer schwieriger herzustellen. Mit jeder PHP Version ändern sich Funktionen, Objektorientierung und vieles andere. Der stärkste Schnitt zwischen PHP 4 und 5 war und ist immer noch die “neue” Konstruktor-Notation:

function __construct()
{
}

Irgendwie hab ich immer noch nicht so ganz genau gepeilt, was den Ausschlag zu der von den PHP Entwicklern gewählten Notation geführt hat. Ich finde es auf jeden Fall furchtbar.

Damit man bei PHP 4 die PHP 5 Konstruktoren verwenden kann, muss die Mutterklasse (Ausführlich vorgestellt in “Die Mutter aller Objekte“) wie folgt erweitert werden oder aussehen:

class Object
{
    function Object()
    {
        $args= func_get_args();
        call_user_func_array
        (
            array(&$this, '__construct'),
            $args
        );
    }

    function __construct()
    {
        // Abstrakte Funktion
    }
}

Alle Klassen, die von der Object-Klasse abgeleitet werden, dürfen keinen PHP 4-Style Konstruktor einsetzen, sondern eine Funktion, die “__construct” heisst:

class ChildObject extends Object
{
    function __construct()
    {
        // Neuer Konstruktor
    }
}

Wenn dem so ist, wird für jedes Objekt in PHP 4 der Konstruktor von Object aufgerufen. Und der leitet alle Aufrufe an die vom aktuellen Objekt überschriebene Funktion “__construct” auf.

Was passiert bei PHP 5? Nix. PHP 5 ruft direkt den “__construct” Parameter auf. Wenn die Bibliothek dann final auf PHP 5 portiert wird, muss man nur noch in der Mutterklasse die Funktion “Object” entfernen und das wars…

Teile und genieße
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

Schreib Deine Meinung