Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++



:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP? In über 120.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
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.



 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


Microsoft Deutschland GmbH
twosteps.net - ...Premium-Webhosting
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2009 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt