Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
Letztes Update: 04.09.2007 20:49:50

Navigation

Seite Startseite
Seite Aktuelles
Seite Seite News*
Seite Seite Pressemitteilungen*
Seite SELFPHP
Seite Seite Über SELFPHP
Seite Seite Werbung
Seite Seite Kontakt
Seite Seite Unsere Banner
Seite Seite Impressum
Seite Qozido
Seite Seite Diving Edition
Seite Seite Snorkeling Edition
Seite SELFPHP Dokumentation
Seite Seite PHP-Skripte
Seite Seite PHP Befehlsreferenz
Seite Seite PHP 5 Praxisbuch
Seite Seite PHP Code Snippets
Seite Seite SELFPHP in Buchform
Seite Anbieterverzeichnis
Seite Seite Globale Branchen
Seite Seite Webhosting/Server
Seite Services
Seite Seite Forum*
Seite Seite RSS-Feeds*
Seite Seite Downloads*
Seite Seite Gratis-Video-Lektionen*
Seite Seite SELFPHP auf Heft-CD*
Seite Seite Newsletter*
Seite Internet Security
 sponsored by  
Seite Stellenangebote*
Sedo - Bei uns wird PHP großgeschrieben
Seite Premium-Partner   
Webhosting/Serverlösungen
Seite Produktempfehlung   
Seite Seite SteadyBackup

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  
 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 100.000 Beiträgen finden Sie sicher die passende Antwort!*  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!*

Vorname: 
Name:
E-Mail:
 




 

Typen-Hinweise (class type hints)




PHP ist eine schwach typisierte Sprache und verfügt über keine strikte Typisierung. PHP legt intern fest, welchen Datentyp eine Variable annimmt oder eine Funktion zurückgibt. Es gibt zwar die bereits behandelten Umwandlungsfunktionen, letztlich besteht aber kein Typzwang, wie dies in Programmiersprachen üblich ist. Anstatt auf eine strikte Typisierung kann jedoch auf einen klassenbasierten Typen-Hinweise (engl. type hints) zugegriffen werden. Dieser Typen-Hinweis wird zur Laufzeit ausgewertet. Damit kann festgelegt werden, dass an Methoden nur Objekte einer bestimmten Klasse übergeben werden können.


Funktionsweise von Typen-Hinweisen

Die Forderungen an den Typ eines Parameters können durch die Angabe eines Klassen- oder Schnittstellennamens in der Signatur der Methode erfolgen. Die Typenprüfung erfolgt jedoch nicht zum Zeitpunkt der Kompilierung, sondern erst zur Laufzeit. Diese sogenannten Class Type Hints ersparen dem Entwickler einiges an Schreibarbeit, wie die beiden folgenden Beispiele zeigen.

Beispiel – Class Type Hints

<?php

interface Reinlassen
{
  function Zutrittgestatten();
}

class Vipzone implements Reinlassen
{
  function Zutrittgestatten()
  {
    echo "VIP Bereich.\n";
  }
}

class Normalzone implements Reinlassen
{
  function Zutrittgestatten()
  {
    echo "Öffentlicher Bereich.\n";
  }
}

class Privatperson
{
  function Betreten(Normalzone $ticket)
  {
    echo $ticket->Zutrittgestatten();
  }
}

class Vipperson
{
  function Betreten(Reinlassen $ticket)
  {
    echo $ticket->Zutrittgestatten();
  }
}

$vip = new Vipperson();
echo "VIP-Person Zutritt zu:\n";
$vip->Betreten(new Normalzone);
$vip->Betreten(new Vipzone);

$normalperson = new Privatperson();
echo "Normal-Person Zutritt:\n";
$normalperson->Betreten(new Normalzone);
$normalperson->Betreten(new Vipzone);

?>

Ausgabe
VIP-Person Zutritt zu:
Öffentlicher Bereich.
VIP Bereich.
Normal-Person Zutritt:
Öffentlicher Bereich.

Fatal error: Argument 1 passed to Privatperson::Betreten() must be an instance of Normalzone

Wie man an diesem Beispiel sieht, kann das Objekt $normalperson nur den öffentlichen Bereich betreten, während es beim Objekt $vip egal ist, welcher Bereich betreten wird. Die Angabe von function Betreten(Normalzone $ticket) entspricht:

function Betreten($ticket)
{  
  if (!($ticket instanceof Normalzone))
  {
    die("Argument 1 must be an instanc of vipzone");
  }
  echo $ticket->Zutrittgestatten();
}



Ausgabe
VIP-Person Zutritt zu:
Öffentlicher Bereich.
VIP Bereich.
Normal-Person Zutritt:
Öffentlicher Bereich.
Argument 1 must be an instanc of Vipzone

Beispiel – Typprüfung mit Class Type Hints

<?php

class Rechnung {
  function berechne(Rechnung $rechnung) {
    // ...
  }
}

?>

Beispiel – Typprüfung mit dem instanceof-Operator

<?php
class Rechnung {
  function berechne($rechnung) {
    if (!($rechnung instanceof Rechnung)) {
      die('Parameter muss vom Typ Rechnung sein.');
    }
    // ...
  }
}
?>

Hinweis: Diese beiden Beispiele unterscheiden sich lediglich in der Art der Typprüfung durch die Class Type Hints bzw. den instanceof-Operator.



 




 sponsored by

Sedo - Bei uns wird PHP großgeschrieben


VERIO - An NTT Communications Company


HighText iBusiness


Webspace-Verkauf.de


video2brain




 Premium-Partner
 Webhosting/Serverlösungen

BPI-Systeme


Premium-Partner Pixel X


Premium-Partner First Colo


Premium-Partner dogado Internet




Qozido


© 2001-2008 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt