copyright (c)  2003   useGroup
PHP

Jochen Stärk
PHP-Tutorial
Variablen

nach untenKennzeichnung
nach untenGeltungsbereich
nach untenCookies
nach untenÜbernahmereihenfolge
nach untennull
nach untenisset
nach untenunset
nach untenerror_reporting

Kennzeichnung

nach obenKennzeichnung 

Dem Variablennamen wird ein Dollarzeichen $ vorangestellt. Ein Variablenname darf keine Leerzeichen, Satz- oder Sonderzeichen oder deutschen Umlaute wie äöüß enthalten. Eine Variable definiert man, indem man ihr einen Wert zuweist, z.B.

	$a = 1;
	$b = "Testtext"
Die Variablen sind nicht getypt wie in anderen (Kompiler-) Programmiersprachen; das heißt, eine Zahl wird zur Ausgabe automatisch zum String. So kann man z.B. mit
<?php
$a="My House <br>";  //My House 
echo $a;
$a=5;
echo $a."<br>";  // 5
$a="5";
echo $a+7;  // 12
?>
Den Typ einer Variable scheinbar ändern - und vor allem, ein String (der aber nur die Zahl 5 enthält) mit 7 summieren -- und PHP errechnet 12.


Geltungsbereich

nach obenGeltungsbereich 

Variablen gelten grundsätzlich nur für den Bereich, in dem sie definiert wurden. Wenn eine Variable beispielsweise in der Funktion definiert wurde, gilt sie nur für diesen Bereich. Um eine Variable zu importieren die z.B. im Hauptprogramm definiert wurde, gehen Sie folgendermaßen vor:

$a=2;
$b=3;
Sum();
echo $b; // 5
Function Sum () {
    global $a, $b;
    $b = $a + $b;
} 


Cookies

nach obenCookies 

Cookies (Informationshäppchen, die auf einer bestimmten Stelle der Platte des Surfers gespeichert werden, eine bestimmte Größe nicht überschreiten dürfen und nur von der Domain die sie gesetzt hat einsehbar sind) werden gesetzt mit

setcookie(<Cookiename>, <Wert>, <Haltbarkeitsdatum>)
Cookieinhalte wie Variablen bereitgestellt - wenn Cookies da sind, sind sie unter Ihrem Namen als Variable anzusprechen.

		$Count=50;
		setcookie ("Count", $Count, time()+3600); // hier nur eine Stunde haltbar,
	// dann wird er vom Browser gelöscht
		echo $Count;
Das Vorhandensein von Cookies (und Variablen überhaupt) überprüft man mit isset()


Übernahmereihenfolge

nach obenÜbernahmereihenfolge 

Die übernahmereihenfolge regelt Namensstreitigkeiten: wenn z.B. ein Cookie denselben Namen hat wie eine Systemvariable. wird in der PHP.INI festgelegt. Default ist "EGPCS": Environment, Get, Post, Cookies, System variables. Ein Cookie der den Namen einer Form-Variable (Get oder Post) hat würde diesen Wert (den der Form-Variable) dann überschreiben.


null

nach obennull 

Das Schlüsselwort null sagt, dass eine Variable zwar vorhanden, aber nicht belegt ist. Bitte auf keinen Fall mit 0 verwechseln, das ja eine Belegung ist. null weißt also eine gewisse ähnlichkeit mit undefined in javascript auf.

$myvar=null;

Ob eine Variable vorhanden ist, überprüfen Sie ggf. bitte mit der derselben Funktion wie Cookies,


isset

nach obenisset  bool isset(<Variable>);

Mit isset können Sie überprüfen, ob eine Variable definiert ist. Da Cookies und Formulardaten automatisch in Variablennamen übernommen werden, können Sie so auch überprüfen, ob Cookies definert sind.


unset

nach obenunset  void unset(<Variable>);

Möchten Sie Variablen loswerden, sprich löschen, können Sie dies mit unset tun. Ein kleines Beispiel zu isset und unset:

<?php
if (isset($intelligenz)) echo "Intelligenz existiert,";
else echo "Intelligenz existiert nicht,";
$intelligenz=5;
if (isset($intelligenz)) echo "jetzt existiert Intelligenz,";
else echo "jetzt existiert Intelligenz nicht,";
unset($intelligenz);
if (isset($intelligenz)) echo "und es gibt sie immer noch.";
else echo "und jetzt ist sie wieder verschwunden.";
?>
Auflösung: Die Variable existiert nur beim zweiten Aufruf, die Ausgabe lautet also "Intelligenz existiert nicht,jetzt existiert Intelligenz,und jetzt ist sie wieder verschwunden.".


error_reporting

nach obenerror_reporting  error_reporting($level);

Werden Variablen zuerst ausgelesen, bevor sie zum ersten mal beschrieben werden, geht PHP davon aus, dass sich der Programmierer im Namen vertan hat. Dem Programmierer liefert er einen leeren Inhalt zurück und generiert eine Fehlermeldung mit der Priorität notice. Diese wird in den Defaulteinstellungen von PHP komplett ignoriert, also auch nicht ausgegeben,

In Perl kann man sich dazu zwingen lassen, jede Variable zu deklarieren, bevor man sie nutzt (use strict). Das klingt unbequemm, hilft aber selbst bei kleinen Projekten enorm, Fehler zu finden beziehungsweise gar nicht erst auftreten zu lassen. In PHP gibt es so etwas zwar nicht, ein einschalten der "Notices" hat jedoch eine ähnliche Auswirkung. Das kann in der PHP.ini unter dem Schlüsselwort error_reporting geschehen oder im Script durch nutzen von

error_reporting(E_ALL);
$spukschloss=55;
echo "Der Wert der Variablen ist $spuckschloss";
/*Ausgabe:
Notice: Undefined variable: spuckschloss in /srv/www/htdocs/tutorial/vars/ex2.php on line 4
 Der Wert der Variablen ist
*/

Der Standardwert von Error_reporting ist E_ALL & ~E_NOTICE. Wer kann, sollte das ändern.

Gerade auf einem Entwicklungsserver gibt es keinen Grund, Notices nicht anzuzeigen, und es gibt auch keinen Grund, ein Script ohne error_reporting(E_ALL) zu entwickeln, es sei denn, man mag Bugs.


copyright (c)  2003   useGroup