Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Variablen
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite PHP-Skripte
Seite PHP Befehlsreferenz
Seite PHP5 Praxisbuch
Seite Gratis-Videolektionen*
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

Seite Anbieterverzeichnis

 
* 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:
 



 

Gültigkeitsbereiche und Sichtbarkeit von Variablen




Ein wichtiges Thema im Zusammenhang mit Variablen ist deren Gültigkeitsbereich und Sichtbarkeit. Generell gilt, dass in PHP Variablen immer nun in ihrem lokalen Kontext sichtbar sind.

Dieser beinhaltet auch den Bereich für Dateien, die per include- oder require-Anweisung eingebunden wurden, z.B.:



$autor = "Matthias";
include "buch.inc.php";



Die Variable $autor ist auch in der eingebundenen Datei buch.inc.php verfügbar. Eine innerhalb einer Funktion definierte Variable ist ausserhalb der Funktion nicht sichtbar. Umgekehrt gilt dasselbe, d.h. eine ausserhalb sämtlicher Funktionsblöcke global definierte Variable hat innerhalb eines Funktionsblocks keine Gültigkeit.


Beispiel



<?php
// Globaler Bereich
$preis 9.99;
function 
berechne() {
    
// Referenz auf einen lokalen Bereich
    
return $preis;
}
$betrag berechne();
if (
$betrag) {
    echo 
$betrag;
} else {
    echo 
"Keine Ausgabe, die Variable ist lokal nicht sichtbar!";
}
?>




Ausgabe

Keine Ausgabe, die Variable ist lokal nicht sichtbar!

Um zu erreichen, dass die globale Variable $preis auch lokal innerhalb der Funktion berechne bekannt ist, muss diese explizit mithilfe des Schlüsselworts global innerhalb der Funktion bekannt gemacht werden, man lädt sie so zu sagen ein.


Beispiel



<?php
$preis 
9.99;
function 
berechne() {
    global 
$preis;
    return 
$preis;
}
$betrag berechne();
if (
$betrag) {
    echo 
$betrag;
} else {
    echo 
"Keine Ausgabe, die Variable ist lokal nicht sichtbar!";
}
?>




Ausgabe

9.99

Hinweis: Auf den Einsatz und die Verwendung von Funktionen wird im Abschnitt Funktionen und Prozeduren eingegangen.




Zugriff über $GLOBALS

Eine andere Möglichkeit im lokalen Kontext einer Funktion auf eine globale Variable zuzugreifen, steht über das von PHP definierte Array $GLOBALS zur Verfügung.

Hierbei handelt es sich um eine assoziatives Array, das die Namen der globalen Variablen als Schlüsselwörter verwendet. Den Zugriff innerhalb des lokalen Kontextes einer Funktion über das Array $GLOBALS auf die lokale Variable $preis zeigt folgendes Beispiel:



<?php
$preis 
9.99;
function 
berechne() {
    return 
$GLOBALS[preis];
}
echo 
berechne();
?>




Ausgabe

9.99


Speicherklassen von Variablen

Eine weitere wichtige Eigenschaft von Variablen ist deren Speicherklasse. Normale Variablen verlieren beim Verlassen des lokalen Kontextes ihren Wert und werden beim Wiedereintritt neu initialisiert.

Sollen Variablen auch nach dem Verlassen eines Funktionsblocks ihren Wert behalten müssen sie mithilfe des Schlüsselworts static als statische Variablen vereinbar werden.

Im folgenden Beispiel hat die Variable $zaehler keine statische Lebensdauer, sie wird bei jedem Neueintritt in den Funktionsblock erneut initialisiert. Das Ergebnis der Ausgabe bleibt trotzt zweimaligen Aufrufs der Funktion setzeZaehler() 1.


<?php
function setzeZaehler() {
    
$zaehler 0;
    
$zaehler++;
    return 
$zaehler;
}
$zustand1 setzeZaehler();
// Ausgabe (1)
echo $zustand1;
$zustand2 setzeZaehler();
// Ausgabe (1)
echo $zustand2;
?>



Wird die Variable $zaehler jedoch statisch vereinbar, behält sie auch nach dem Verlassen des Funktionsblocks und dem Wiedereintritt bei einem erneuten Aufruf der Funktion setzeZaehler() ihren Wert, sodass sich, wie das folgende Beispiel zeigt, ein anderes Ergebnis ergibt:


<?php
function setzeZaehler() {
    static 
$zaehler 0;
    
$zaehler++;
    return 
$zaehler;
}
$zustand1 setzeZaehler();
// Ausgabe (1)
echo $zustand1;
$zustand2 setzeZaehler();
// Ausgabe (2)
echo $zustand2;
?>



Eine weitere interessante Anwendung in diesem Zusammenhang sind rekursive Funktionen. Dies sind Funktionen, die sich aus sich selbst heraus aufrufen. Hierbei besteht die Gefahr, so genannte Endlos-Schleifen bzw. Endlos-Rekursionen zu programmieren, welche die Performance des jeweiligen Systems äusserst negativ beeinflussen. Sie müssen also einen Weg vorsehen, diese Rekursion zu beenden. Die folgende Funktion setzeZaehler() zählt rekursiv bis 10. Die statische Variable $zaehler wird benutzt, um die Rekursion zu beenden:


<?php
function setzeZaehler() {
    static 
$zaehler 0;

    
$zaehler++;
    echo 
$zaehler;
    if (
$zaehler 10) {
        
setzeZaehler();
    }
}
// Ausgabe (12345678910)
setzeZaehler();
?>




Achtung: Sollten sie keine statische Variable verwenden kommt es zu einer Endlos-Schleife.




 


Unwandeln und Prüfen von Variablen
 




 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