Hauptmenü

Untermenü

OOP PHP5 - Grundlagen - Typprüfung

1. Objektabhängigkeiten

Hier hat man die Möglichkeit zu prüfen, ob Objekte von einer bestimmten Klasse abgeleitet bzw. daraus erzeugt wurden. Um euch dieses Prinzip zu erläutern, gehen wir mal von folgender Situation aus (auch wenn ich hier vorgreife). Also, Dieter hat seine Dörte endlich rum bekommen. Ist zwar ein grausiges Deutsch, aber so redet man in meiner Heimat. So, die beiden haben bei einem romantischen Abendessen ziemlich viel Alkohol konsumiert und nun geht es ans Eingemachte. Die Situation stellt sich dann wie folgt dar.


class Sex
{
  public function beischlaf ($er$sie)
  {
    // Zensiert
  }
}
class Mann {...}
class Frau {...}
$dieter = new Mann;
$doerte = new Frau;

Hier gibt es nun zwei verschiedene Möglichkeiten, um zu verhindern, dass zum Beispiel Dieter nach diesem feuchtfröhlichen Abend am nächsten Morgen neben einem behaarten Männerhintern aufwacht.

instanceof

Beide Objekte, also $dieter und $doerte müssen aus ihren Klassen Mann und Frau erzeugt worden sein. Sonst wird die Methode beischlaf des Objektes Sex nicht ausgeführt.


$dieter = new Mann;
$doerte = new Frau;
if ($dieter instanceof Mann && $doerte instanceof Frau)
{
  $sex = new Sex;
  $sex -> beischlaf ($dieter$doerte);
}

Type Hinting

Dies ist eine andere Form der Typprüfung, die aber dasselbe bewirkt wie instanceof. Nur die Syntax ist ein wenig anders und kann auch nur bei der entsprechenden Methode genutzt werden. Dabei wird die Klasse dem zu übergebenden Objekt, also dem Parameter voran gestellt.


class Sex
{
  public function beischlaf (Mann $erFrau $sie)
  {
    // Zensiert
  }
}
class Mann {...}
class Frau {...}
$dieter = new Mann;
$doerte = new Frau;
$sex = new Sex;
$sex -> beischlaf ($dieter$doerte);

Wichtig

Sowohl bei instanceof als auch beim Type Hinting wird keine Überprüfung der Werte vorgenommen! Entscheidend ist nur, dass das eine Objekt aus der Klasse Mann und das zweite Objekt aus der Klasse Frau abgeleitet wurde. Leider kann man so etwas damit nicht verhindern.


$dieter     = new Mann;
$jacqueline = new Frau;

2. Parameterprüfung auf ihre Art

Diese Möglichkeit gibt es erst seit PHP 5.1. Und leider bezieht sie sich nur auf Arrays. Integer oder String sind derzeit noch nicht möglich. Das Prinzip muss man sich so vorstellen.


class Sex
{
  public function beischlaf (Mann $erFrau $sie,
                             array $verhuetungsmittel)
  {
    // Zensiert
  }
}
class Mann {...}
class Frau {...}
$dieter = new Mann;
$doerte = new Frau;
$sex = new Sex;
$sex -> beischlaf ($dieter$doerte, array ('kondom''pille'));

Sicher ist sicher.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt