Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
Professional CronJob-Service

Suche


iOS DevCon 2013



Software Architecture Summit 2013


:: Anbieterverzeichnis ::

Globale Branchen

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

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.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

SELFPHP Produktempfehlung
Microsoft Windows Server 2008
Seite Windows Server 2008
Seite
Microsoft SQL Server 2008
Seite SQL Server 2008
Seite
Microsoft Expression Web 3
Seite Microsoft Expression
Seite



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.




Objekte erzeugen und verwenden
 




:: Premium-Partner ::

Webhosting/Serverlösungen

PSW GROUP GmbH & Co. KG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

HighText Verlag Graf und Treplin OHG weitere Sponsoren
 

:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Verzeichnis rekursiv kopieren

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


Tabellen mit Überhang in einer MySQL-Datenbank ermitteln und optimieren

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2013 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt
© 2005-2013 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de