PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

Die Mutter aller Objekte

Okay, jetzt wird ein bisschen an der Oberfläche gekratzt. Ich möchte einen Quasi-Standard vorstellen, der viele Möglichkeiten eröffnet und trotzdem oft links liegen gelassen wird: Das Objekt-Objekt, oder die Mutter aller Objekte :)

Wer schon mal Windowsprogrammierung mit der MFC oder STL betrieben hat, kennt das Objekt-Objekt. Genauso gut sind diejenigen dran, die schon mit guten PHP Frameworks gearbeiten haben: Alle Klassen sind von einer Stammklasse abgeleitet, die absolut wertfrei ist.

Vielleicht sieht das der eine oder andere als Designfehler an, denn Klassen sollten ihre Eigenschaften und Methoden eigentlich nur an gleichartige oder artverwandte Klassen weitergeben. Wieso dann eine Mutterklasse für alles?

Nun, der Einsatz auf den ich abziele, ist folgender: Nehmen wir mal an, es gibt eine Funktion, die in jeder Klasse dieselbe Funktion hat, immer gleich heisst und überall vorkommt. Gibts nicht? Na klar, gibts doch: Der Konstruktor von PHP 5: “__construct()”. Im direkt nachfolgenden Artikel demonstriere ich, wie man den PHP 5 Konstruktor in PHP 4 verwenden kann, aber dazu später mehr…

Eine andere Idee wäre, Zugriffe auf GPC-Variablen ($_GET, $_POST und $_COOKIE = GPC) und andere Datenquellen zu kapseln. Ist nichts neues, und es gibt verschiedene Möglichkeiten so etwas zu implementieren:

  • Als globale Funktion
  • Als Singleton-Objekt
  • Als global verwendetes Objekt
  • Als statische Funktion

Ich bin mir sicher, der eine oder andere hat so was schon mal implementiert ;) Wie das Mutterobjekt letztendlich heisst, ist wurscht: Gängig ist die Bezeichnung “Objekt” oder “Object” - Bei der Bezeichnung kanns schnell krachen, wenn es bereits eine so benannte Klasse gibt. Aber bleiben wir mal bei der globalen Funktion: Die könnte man auch prima in der Mutterklasse unterbringen:

class Object
{
    function GetParam($pname)
    {
        $use_post= isset($_POST[$pname]);
        return $use_post ? $_POST[$pname] : $_GET[$pname];
    }
}

Bitte probiert das nicht zu Hause: Diese Kurzfassung ist sehr fehleranfällig ;) Aber ich denke, man kann sehen, worauf ich hinaus will. Auf jeden Fall erbt jetzt jede abgeleitete Klasse die Funktion für das Auslesen von Parametern.

So, aber immer langsam mit den jungen Pferden: Das ist keine Einladung, das Mutterobjekt sinnlos voll zu müllen - es ist immer besser, sparsam mit Member-Funktionen in Objekten umzugehen. Lieber artverwandte Funktion in Objekte auslagern, als alles in ein und dieselbe Klasse zu packen.

Teile und genieße Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • del.icio.us
  • Technorati
  • Digg
  • Slashdot
  • YahooMyWeb
  • Furl
  • Ma.gnolia
  • Spurl
  • Netscape
  • StumbleUpon
  • MyShare
  • blogmarks

PHP Blogger: Eure Meinung: Sichtbarkeit von Variablen - Der deutsche PHP Blog meint dazu:

21. Oktober 2007 um 00:23

[…] PHP5 und versuche auch eine sinnvolle Klassenstruktur zu wahren. Jedenfalls habe ich sowas wie die Mutter aller Objekte, von denen sich sämtliche Klassen ableiten. In diesem Objekt habe ich eine Funktion __sleep, […]

RSS für Kommentare zu diesem Artikel · TrackBack URI

Schreib Deine Meinung