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.   

 
 
Konstruktoren und Destruktoren




Der bereits aus PHP 4 bekannte Konstruktor ist Teil eines Phasenmodells, wobei das Objekt nach dem Initialisierungszustand (Konstruktor) zur Benutzung freisteht und am Ende beseitigt wird (Destruktor). Ein typisches Szenario, welches wir auch bei Aktionen im Alltag wieder finden, wenn wir beispielsweise etwas auf- und abbauen.


Funktionsweise von Konstruktoren und Destruktoren

Ein Konstruktor ist nichts anderes als eine Funktion, die immer dann aufgerufen wird, wenn das Objekt der Klasse instanziert wird. Der Konstruktor wird ab sofort mit __construct() deklariert, obwohl er auch dann weiterhin als Konstruktor erkannt wird, wenn er den Namen der Klasse trägt. Konstruktoren und Destruktoren besitzen im Gegensatz zu gewöhnlichen Funktionen keinen Returntyp. Sämtliche Aufräumarbeiten, die zum sorgfältigen Beseitigen eines Objekts beitragen, übernimmt der parameterlose Destruktor __destructor(). Dazu gehört neben der zuletzt aufgerufenen Referenz die Freigabe jeglicher Speicherressourcen für das Objekt.

Ein Objekt existiert, wie alle anderen Variablen auch, bis zum Ende des Skripts oder bis es gezielt zerstört, also auf NULL gesetzt oder mit unset() vernichtet wird. Normalerweise ergeben sich daraus keine Konsequenzen, PHP sorgt automatisch für die Freigabe des belegten Speichers. Es gibt jedoch Anwendungsfälle, in denen externe Programme an der Kommunikation beteiligt sind, wie z. B. Datenbanken. In solchen Fällen wäre es fatal, wenn ein Objekt eine Verbindung zur Datenbank herstellt und dann zerstört wird, während die Verbindung bestehen bleibt. Es entstehen verwaiste Verbindungen. Verfügt eine Datenbank lediglich über rudimentäre Kontrollmechanismen oder eine begrenzte Anzahl von erlaubten Verbindungen, führt dies früher oder später zu Fehlern. Um das Verhalten am Ende der Existenz eines Objekts zu kontrollieren, sind somit Destruktoren genau das richtige Mittel. Sie werden unmittelbar vor der endgültigen Zerstörung aufgerufen.

Beispiel – Konstruktor und Destruktor

<?php

class MeineKlasse {
   public function __construct() {
       echo "Befinden uns im Konstruktor.<br>";
       $this->name = "MeineKlasse";
   }

   public function __destruct() {
       echo "Zerstöre die Klasse: " . $this->name . ".<br>";
   }
}

$objekt = new MeineKlasse();

?>

Ausgabe
Befinden uns im Konstruktor.
Zerstöre die Klasse: MeineKlasse.

Beispiel – ohne public-Schlüsselwort

<?php

class Lebewesen
{  
  function __construct()
  {
    echo "Konstruktor";
  }
  function __destruct()
  {
    echo "Destruktor";
  }
}


$objekt = new Lebewesen();
print_r($objekt);

?>

Ausgabe
Konstruktor Lebewesen Objekt
(
)
Destruktor

Achtung: Bei abgeleiteten Klassen werden Konstruktoren und Destruktoren der Elternklasse nicht automatisch ausgeführt und müssen explizit mit parent::__construct() beziehungsweise mit parent::__destruct() aufgerufen werden. Das Schlüsselwort parent verweist dabei auf die Klasse, von der mit extends geerbt wurde. Der Konstruktor bzw. Destruktor wird über seinen Namen aufgerufen. Nach parent darf lediglich mit dem statischen Verweisoperator :: gearbeitet werden, da zum Zeitpunkt des Konstruktoraufrufs das Objekt noch nicht existiert und deshalb die Definition direkt benutzt wird.



 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner LeaseWeb Germany GmbH
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 ::


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

Qozido


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