Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  PHP und OOP
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

 
* 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 79.000 Beiträgen finden Sie sicher die passende Antwort!  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 



 

Konstruktoren und Destruktoren




Die bisherigen Darstellungen lassen vielleicht bei dem einen oder anderen den Verdacht aufkommen, dass die objektorientierte Programmierung sich für eine Vielzahl von Projekte eignet und die ist genau das was wir bezwecken, daher sind wir noch nicht am Ende. Es gilt weitere Bestandteile kennen zu lernen.

Oft werden Sie für ein Objekt einen bestimmten Anfangszustand benötigen. Es wäre eine Möglichkeit, als Erstes immer eine Methode init() aufzurufen, die sämtliche Variablen mit den nötigen Ausgangswerten versorgt. Die Meisten objektorientierten Sprachen bieten hierfür eine direkte Unterstützung an. Es gibt dort den Begriff des Konstruktors. Dies ist eine Methode, die immer beim Erzeugen einer Instanz aufgerufen wird. Entsprechend räumt der Destruktor beim Zerstören des Objekts wieder auf.


Einsatz von Destruktoren

Eine komplexe Speicherverwaltung wie in C++ kennt PHP nicht. Solche Prozesse laufen im Hintergrund automatisch ab. Einmal erzeugte Objekte haben ohnehin nur eine Lebensdauer innerhalb des Skripts, mit dem Sprung zum nächsten Skript werden sämtliche Speicherobjekte gelöscht. Der Aufwand einer Löschung des Speichers lohnt daher nicht. Entsprechend stehen in PHP auch keine Destruktoren zur Verfügung.


Einsatz von Konstruktoren

Im Gegensatz zu den Destruktoren, die in PHP nicht zur Verfügung stehen, können Sie sich aber einen Konstruktor erzeugen. Ein zusätzliches Schlüsselwort wird hierzu nicht benötigt, die Methode, die als Konstruktor dient, wird einfach wie die Klasse benannt. Die Klasse ext_warenkorb könnte also leicht um einen Konstruktor ext_warenkorb() erweitert werden, welcher dafür sorgt das beim Anlegen einer Instanz bereits ein Standardartikel angelegt wird.



class ext_warenkorb extends warenkorb
{
    function artikelEntfernen($artnr) {
        unset($this->artikel[$artnr]);
        unset($this->stueckzahl[$artnr]);
    }
    function ext_warenkorb() {
        $this->eintragen("0000","Katalog");
    }
}



Somit wird jeder Warenkorb mit dem aktuellen Katalog vordefiniert. An der Instanziierung der Klasse mit new ändert sich nichts. Konstruktoren unterscheiden sich auch sonst nicht von normalen Funktionen.


Besonderheit

Sollten Sie im Konstruktor einen Rückgabewert mit return definieren, wird dieser Wert beim Aufruf verloren gehen. Sie können jedoch die Konstruktormethode jederzeit explizit aufrufen:



echo $meinWarenkorb->ext_warenkorb();



Ebenso können der Methode Parameter übergeben werden. Betrachten Sie sich folgenden Beispiel:


<pre>
<?php
// Klasse
class person
{
    var 
$vorname;
    var 
$nachname;
    var 
$alter;
    
    
// Konstruktor
    
function person($vn$nn$alt) {
        
$this->vorname $vn;
        
$this->nachname $nn;
        
$this->alter $alt;
    }
    
    
// Methode
    
function datenAusgeben() {
        echo 
"Personendaten:<br>";
        foreach (
$this as $key=>$element) {
            echo 
"$key $element<br>";
        }
    }
}

// Objekt erzeugen
$meineSchwester = new person("Caroline","Kannengiesser",25);

// Ausgabe der Struktur des Objekts
print_r($meineSchwester);

// Ausgabe der Personendaten
$meineSchwester->datenAusgeben();

?>
</pre>




Ausgabe



person Object
(
    [vorname] => Caroline
    [nachname] => Kannengiesser
    [alter] => 25
)
Personendaten:
vorname Caroline
nachname Kannengiesser
alter 25



Wie Sie sehen ist die Übergabe von Parametern an den Konstruktor ohne weiteres möglich.


 


Vererbung
 




 sponsored by

Host Europe


HighText iBusiness


Host Europe




© 2001-2006 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2006 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de