PHP – Grundlagen
PHP – Grundlagen
PHP – Grundlagen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Daniel Höfer<br />
Programmieren – <strong>PHP</strong>
• <strong>PHP</strong> – <strong>PHP</strong>: Hypertext Preprocessor<br />
• Entwickelt von: <strong>PHP</strong> Group<br />
• Aktuelle Version: 5.3.0<br />
• Webpräsenz: http://www.php.net
• Skriptsprache für Webentwicklung<br />
• Skript wird von Server interpretiert und<br />
abgearbeitet. Ergebnis wird an den Client<br />
geschickt und dort interpretiert (IE, FF, …)<br />
• Dateiendung: .php<br />
• Grundlegend ist Syntax mit C / C++<br />
vergleichbar
Anfrage: news.html<br />
1. Client fordert Datei vom<br />
Server an (z.B. news.html)
news.html<br />
1. Client fordert Datei vom<br />
Server an (z.B. news.html)<br />
2. Server sucht Datei und<br />
übermittelt den Inhalt an den<br />
Client<br />
Apache Webserver
1. Client fordert Datei vom<br />
Server an (z.B. news.html)<br />
2. Server sucht Datei und<br />
übermittelt den Inhalt an den<br />
Client<br />
3. Client (Browser) interpretiert<br />
HTML-Code aus news.html und<br />
zeigt Inhalt an.<br />
news.<br />
html
Anfrage: news.php<br />
1. Client fordert Datei vom<br />
Server an (z.B. news.php)
news.php<br />
1. Client fordert Datei vom<br />
Server an (z.B. news.php)<br />
2. Server sucht Datei und<br />
interpretiert <strong>PHP</strong> Code (Skript<br />
wird ausgeführt)
news.php<br />
Generierter<br />
HTML Code<br />
<strong>PHP</strong> Interpreter<br />
1. Client fordert Datei vom<br />
Server an (z.B. news.php)<br />
2. Server sucht Datei und<br />
interpretiert <strong>PHP</strong> Code (Skript<br />
wird ausgeführt)<br />
3. Generierter HTML-Code der<br />
<strong>PHP</strong> Datei wird anschließend an<br />
den Client übermittelt<br />
Apache Webserver
news.php<br />
1. Client fordert Datei vom<br />
Server an (z.B. news.php)<br />
2. Server sucht Datei und<br />
interpretiert <strong>PHP</strong> Code (Skript<br />
wird ausgeführt)<br />
3. Generierter HTML-Code der<br />
<strong>PHP</strong> Datei wird anschließend an<br />
den Client übermittelt<br />
4. Client (Browser) interpretiert<br />
HTML-Code aus news.html und<br />
zeigt Inhalt an.<br />
HTML<br />
Code
• HTML<br />
• Benötigt einen simplen Webserver<br />
▪ z.B.: Apache, IIS, …<br />
• HTML Dateien werden nur übermittelt<br />
• <strong>PHP</strong><br />
• Benötigt einen simplen Webserver und den <strong>PHP</strong><br />
Interpreter.<br />
• <strong>PHP</strong>-Anbindung für alle gängigen Webserver.
• <strong>PHP</strong><br />
• Installation der einzelnen Komponenten erfordert<br />
extra Konfiguration.<br />
• Lösung: Gesamtpacket XAMPP<br />
▪ Wird von „Apache Friends“ bereitgestellt<br />
▪ Beinhaltet unter anderem<br />
▪ Apache Webserver<br />
▪ <strong>PHP</strong> Interpreter<br />
▪ MySQL Datenbank<br />
▪ Interface zur Administration dieser Komponenten
• <strong>PHP</strong> Dateien enden mit „.php“ und befinden<br />
sich, wie HTML Dateien im Webverzeichnis<br />
des Webservers.<br />
• In einer <strong>PHP</strong> Datei kann sich<br />
• <strong>PHP</strong> Code<br />
• HTML Code<br />
befinden
• <strong>PHP</strong> Code wird mit „“ abgeschlossen.<br />
• <strong>PHP</strong> Bereiche können beliebig oft in einer<br />
<strong>PHP</strong> Datei vorkommen.<br />
• Text außerhalb eine <strong>PHP</strong> Bereichs wird als<br />
Text bzw. HTML interpretiert.
• Beispiel (reine Textausgabe)<br />
<br />
echo „Hello World!“;
• Testen der <strong>PHP</strong>-Installation<br />
• Ausgabe: Detaillierte Informationen über die <strong>PHP</strong><br />
Installation und alle aktivierten Module<br />
<br />
phpinfo();
• Beginn einer Variable mit einem<br />
Dollarzeichen ($)<br />
• Anschließend zwingend ein Buchstabe oder „_“<br />
• Bei der Definition werden keine Datentypen<br />
angegeben.<br />
• Typ wird anhand der Variablenzuweisung<br />
bestimmt.
• Groß-Kleinschreibung wird beachtet<br />
• $var und $vAr sind unterschiedliche Variablen<br />
• unset() – Löschen einer Variablenbelegung<br />
• isset()<br />
– Prüft, ob die Variable belegt ist
• Variablentypen<br />
Datentyp<br />
Beispiel / Beschreibung<br />
String<br />
„a“, „bla“, „Test test“<br />
Integer 1, 2, 500<br />
Float / Double<br />
1.5, 20.0, 17e2<br />
Boolean<br />
frue, false<br />
Array<br />
Mehrwertiger Datentyp<br />
Object<br />
Mehrwertiger Datentyp<br />
Resource<br />
Referenz auf externe Quellen<br />
Null<br />
Typ ohne Wert
• Variablentypen<br />
Datentyp Konvertierung Prüfung<br />
String (string) is_string<br />
Integer (int) is_int, is_integer<br />
Float / Double (float), (double) is_float, is_double<br />
Boolean (bool), (boolean) is_bool<br />
Array (array) is_array<br />
Object (object) is_object<br />
Null - is_null
• Operatoren mit Variablen<br />
• Zuweisung einer Variable (by Value)<br />
▪ $var = 10;<br />
$var2 = $var;<br />
$var2 = 20;<br />
Zuweisung des Wertes 10 auf $var2<br />
▪ $var hat den Wert 10, $var2 hat den Wert 20
• Operatoren mit Variablen<br />
• Zuweisung einer Variable (by Reference)<br />
▪ $var = 10;<br />
$var2 = &$var;<br />
$var2 = 20;<br />
& signalisiert Zuweisung by Reference<br />
Zuweisung der Adresse von $var auf<br />
$var2. $var2 „zeigt“ auf $var<br />
▪ $var hat den Wert 20, $var2 hat den Wert 20
• Operatoren mit Variablen<br />
• Doppeltes $ Zeichen<br />
▪ Variable wird ausgewertet und Wert der Variable als<br />
tatsächlicher Variablennamen herangezogen.<br />
▪ Beispiel<br />
▪ $gehalt = 1000;<br />
$variable = „gehalt“;<br />
echo $$variable;<br />
$$variable<br />
„gehalt“<br />
$variable hat den Wert „gehalt“<br />
▪ Ergebnis: Es wird „1000“ ausgegeben
• Operatoren mit Variablen<br />
• Funktionsaufruf aus Variablen<br />
▪ $wert = „hallo“;<br />
$funktion = „strlen“;<br />
echo $funktion($wert);<br />
Wird übersetzt in strlen(„hallo“);<br />
und mit echo ausgegeben.<br />
▪ Es wird die Funktion strlen(„hallo“) aufgerufen. Diese<br />
gibt den Wert „5“ aus.
• Strings<br />
• sind Zeichenketten<br />
• String werden mit einem Punkt (.)<br />
zusammengefügt<br />
• $var = „Hallo“.“wie“.“gehts“;<br />
• Zeichenkette mit „“ oder ‚‘ definieren<br />
• $var = „Hallo“;<br />
$var2 = ‚Hallo‘;<br />
// = „Hallowiegehts“
• Zeichenkette mit „“ oder ‚‘ definieren<br />
• $var = „Hallo“;<br />
$var2 = ‚Hallo‘;<br />
• Unterschied<br />
▪ Passende Werte innerhalb von „“ werden aufgelöst.<br />
▪ Werte innerhalb von ‚‘ werden nicht aufgelöst<br />
▪ $a = „Test“;<br />
echo „Das ist eine $a-Variable“;<br />
▪ Ergebnis: „Das ist eine Test-Variable“
• Stringfunktionen<br />
• string ltrim(string $str);<br />
• string rtrim(string $str);<br />
• string trim(string $str);<br />
• string substr(string $str, int $start [,int $len]);<br />
• string str_replace(string $alt, string $neu, string $str);<br />
• string strpos(string $str, string $suche [, int $startpos]);<br />
• string strstr(string $str, string $suche);<br />
• …
• Integer<br />
• Gängige Operationen<br />
▪ +<br />
Addieren<br />
▪ -<br />
Subtrahieren<br />
▪ *<br />
Multiplizieren<br />
▪ /<br />
Dividieren<br />
▪ %<br />
Modulo<br />
▪ ++<br />
Inkrement<br />
▪ --<br />
Dekrement<br />
▪ +=, -=, /=, *=, … Operation und Zuweisung in einem<br />
▪ …
• Float / Double<br />
• Definition durch einen Punkt (.) als Kommastrich<br />
▪ $var = 100.25;<br />
• Rundungsfunktionen<br />
▪ floor()<br />
Abrunden<br />
▪ ceil()<br />
Aufrunden<br />
▪ round()<br />
Runden
• Boolean<br />
• Kann zwei gültige Werte annehmen<br />
▪ true<br />
▪ false<br />
• Operatoren<br />
▪ == Vergleich ob der Wert identisch ist<br />
▪ === Vergleich ob die Operatoren den gleichen Typ<br />
haben.<br />
▪ Logische Operatoren: || (or), && (and), xor, ! (not)
• Boolean (Beispiel)<br />
• $var = 10;<br />
$str = ‚10‘;<br />
$var == $str; // Ausdruck liefert den Wert true<br />
$var === $str; // Ausdruck liefert den Wert false
• Array<br />
• Sind Objekte, die mehrere Elemente beinhalten<br />
können.<br />
• Elemente können durch einen eindeutigen Namen<br />
(assoziatives Array) oder durch eine Nummer<br />
(nummerisches Array) identifiziert werden.
• Array<br />
• Array anlegen<br />
$arr = array(); // Erzeugt ein leeres Array<br />
$arr = array(10, 20, 30); // Erzeugt Array mit {10, 20, 30}<br />
• Array befüllen<br />
$arr[10] = „Hallo“;<br />
// Befüllt Arrayindex 10 mit dem<br />
// Wert „Hallo“<br />
$arr[] = „wie geht’s?“; // Erzeugt neuen Arrayindex und<br />
// befüllt ihn mit „wie geht‘s?“
• Array<br />
• Assoziatives Array anlegen<br />
$arr = array(„stadt“ => „Wien“, „plz“ => „1010“);<br />
• Ausgabe aller Arrayelemente<br />
print_r($arr);<br />
• Abfrage aus einem Array<br />
$arr[„stadt“]<br />
// Liefert den Wert „Wien“
• Array sortieren<br />
• sort(array $arry [,$sortierTyp])<br />
▪ Normale Sortierung der Werte<br />
▪ Schlüssel werden nicht behandelt<br />
• asort(array $arry [,$sortierTyp])<br />
▪ Sortiertung mit Bezug auf Werte und Schlüssel<br />
• ksort(array $arry [,$sortierTyp])<br />
▪ Sortierung mit Bezug auf den Schlüssel<br />
• rsort(array $arry [,$sortierTyp])<br />
▪ Inverse Sortierung der Werte<br />
▪ Schlüssel werden nicht behandelt
• Array sortieren<br />
• Sortiertypen<br />
▪ SORT_REGULAR<br />
▪ Werte werden normal interpretiert<br />
▪ SORT_NUMERIC<br />
▪ Werte werden als Zahlen interpretiert<br />
▪ SORT_STRING<br />
▪ Werte werden als Zeichenketten interpretiert
• Array sortieren<br />
$arr = array(„a“ => „Rapid“,<br />
„b“ => „Salzburg“,<br />
„c“ => „Austria“)<br />
• sort($arr) liefert<br />
(„0“ => „Austria“,<br />
„1“ => „Rapid“,<br />
„2“ => „Salzburg“)
• Array sortieren<br />
$arr = array(„a“ => „Rapid“,<br />
„b“ => „Salzburg“,<br />
„c“ => „Austria“)<br />
• asort($arr) liefert<br />
(„c“ => „Austria“,<br />
„a“ => „Rapid“,<br />
„b“ => „Salzburg“)
• Array sortieren<br />
$arr = array(„a“ => „Rapid“,<br />
„b“ => „Salzburg“,<br />
„c“ => „Austria“)<br />
• ksort($arr) liefert<br />
(„a“ => „Austria“,<br />
„b“ => „Rapid“,<br />
„c“ => „Salzburg“)
• Array sortieren<br />
$arr = array(„a“ => „Rapid“,<br />
„b“ => „Salzburg“,<br />
„c“ => „Austria“)<br />
• rsort($arr) liefert<br />
(„0“ => „Salzburg“,<br />
„1“ => „Rapid“,<br />
„2“ => „Austria“)
• Arrayfunktionen<br />
• Suche nach Werten in einem Array<br />
bool in_array($suche, array $array [, bool $typ])<br />
▪ Gibt true / false zurück (ob Wert vorhanden ist)<br />
▪ Wenn $typ = true: Es wird typsicher geprüft (===)<br />
mixed array_search($suche, array $array [,bool $typ])<br />
▪ Gibt den Key des Wertes zurück falls vorhanden<br />
▪ Gibt false zurück fall der Wert nicht vorhanden ist<br />
▪ Wenn $typ = true: Es wird typsicher geprüft (===)<br />
bool array_key_exists($gesucht, array $array)<br />
▪ Gibt true / false zurück (ob Key vorhanden ist)
• Arrayfunktionen zur Zeigerbewegung<br />
• Zeiger hält aktuelle Arrayposition<br />
• Funktionen dazu<br />
▪ current() Aktuelles Element im Array<br />
▪ prev() Vorheriges Element<br />
▪ next() Nächstes Element<br />
▪ reset() Zurück zum ersten Element<br />
▪ end() Zeiger auf die letzte Position setzen
• Arrayfunktionen für Stackoperationen<br />
• Stack als Stapel von Elementen<br />
• Zwei Funktionen<br />
▪ int array_push(array $stack, mixed $var)<br />
▪ mixed array_pop(array $stack)<br />
• Push legt Element oben auf den Stapel<br />
• Pop holt Element oben vom Stapel
• Objekte<br />
• Objektorientiertes Sprachelement<br />
• Objekte repräsentieren Elemente die vom<br />
Programm abgebildet werden sollen<br />
• …beinhalten Attribute<br />
• …besitzen Funktionen
• Ressourcen<br />
• Elemente aus externen Datenquellen<br />
• z.B.:<br />
▪ Dateien zum lesen / schreiben<br />
▪ Ergebnisse von Datenbankabfragen
• NULL<br />
• Variablen, denen kein Wert zugewiesen wurde<br />
• Variablen, die mit unset() entladen wurden<br />
• Funktion is_null($variable) prüft auf NULL
• Feste Werte im Programm<br />
• Wert kann nur bei der Definition festgelegt<br />
werden.<br />
• Konstanten werden GROß geschrieben um<br />
diese leichter zu identifizieren.<br />
• Definition mit<br />
define(„“, );<br />
• z.B.<br />
define(„VORWAHL“, „+43“);
• Konstante kann dann im Programm<br />
verwendet werden.<br />
• z.B.<br />
$telefon = VORWAHL + „1234567“;<br />
• Typ kann mit gettype();<br />
abgefragt werden.
• // Kommentar<br />
• für einzeilige Kommentare bis Zeilenende<br />
• /* Kommentar */<br />
• für mehrzeiligen Kommentar<br />
• /** <strong>PHP</strong>Doc Kommentar */<br />
• für mehrzeiligen <strong>PHP</strong>Doc Kommentar<br />
• Beinhalten Parameter beginnend mit @<br />
▪ @param<br />
▪ @return<br />
▪ @version<br />
▪ …<br />
Parameterbeschreibung einer Funktion<br />
Returnwertbeschreibung<br />
Versionsnummer
• Funktionen werden mit function definiert<br />
function funktionsname($param1, $param2) {<br />
// <strong>PHP</strong> Code<br />
}<br />
• return, wenn die Funktion einen Wert liefern soll<br />
function addiere($param1, $param2) {<br />
return $param1 + $param2;<br />
}
• Globale Variablen in Funktionen verwenden<br />
• In Funktion muss angegeben werden, welche<br />
globale Funktion verwendet werden soll<br />
▪ Schlüsselwort: global<br />
Function piRechnung($param1) {<br />
global $pi;<br />
return $param1 * $pi;<br />
}
• If - Konstrukt<br />
if ($bedingung) {<br />
// <strong>PHP</strong> Code<br />
} elseif ($alternative) {<br />
// <strong>PHP</strong> Code<br />
} else {<br />
}<br />
// <strong>PHP</strong> Code
• If - Konstrukt<br />
if ($bedingung) {<br />
// <strong>PHP</strong> Code<br />
} elseif ($alternative) {<br />
// <strong>PHP</strong> Code<br />
} else {<br />
// <strong>PHP</strong> Code<br />
}<br />
Code wird ausgeführt, wenn<br />
$bedingung den Wert true<br />
liefert<br />
Code wird ausgeführt, wenn<br />
$bedingung nicht zutrifft<br />
jedoch $alternative zutrifft<br />
Wird ausgeführt, wenn<br />
keine Bedingung zutrifft
• If - Konstrukt (alternative)<br />
echo ($x == 10) ? „Ja“ : „Nein“;<br />
Bedingung<br />
Wert, wenn Bedingung True<br />
Wert, wenn Bedingung False
• Switch - Konstrukt<br />
• Entscheidung, wenn mehrere bestimmte Werte<br />
geprüft werden müssen.<br />
switch($variable) {<br />
case ‚100‘: // Code für Wert ‚100‘<br />
break;<br />
case ‚200‘: // Code für Wert ‚200‘<br />
break;<br />
}
• Switch - Konstrukt<br />
• break sorgt für Ende der Abarbeitung im Switch. Fehlt<br />
der Break-Befehl, werden alle Befehle danach im<br />
Switch noch ausgeführt. Kann auch gewollt sein:<br />
switch($variable) {<br />
case ‚100‘:<br />
case ‚200‘: // Code für Wert ‚100‘ und Wert ‚200‘<br />
break;<br />
}
• Switch - Konstrukt<br />
• default wird verwendet, wenn kein Wert im Switch<br />
zutrifft.<br />
switch($variable) {<br />
case ‚100‘: // <strong>PHP</strong> Code<br />
break;<br />
default: // Wird ausgeführt wenn $variable != ‚100‘<br />
}
• While - Schleife<br />
• Schleife, die so oft wiederholte wird, wie die<br />
Bedingung zutrifft.<br />
while ($bedingung) {<br />
}<br />
// <strong>PHP</strong> Code
• Do-While - Schleife<br />
• Schleife, die so oft wiederholte wird, wie die<br />
Bedingung zutrifft. Die Bedingung wird jedoch<br />
erst am Ende geprüft.<br />
• Inhalt der Schleife wird min. einmal durchlaufen<br />
do {<br />
// <strong>PHP</strong> Code<br />
} while ($bedingung)
• For - Schleife<br />
for(startanweisung; laufbedingung; schlussbefehl) {<br />
// <strong>PHP</strong> Code<br />
}<br />
• Beispiel<br />
for($x = 1; $x < 10; $x++) {<br />
echo „Aktueller Wert von x = „.$x;<br />
}
• For - Schleife<br />
for(startanweisung; laufbedingung; schlussbefehl) {<br />
// <strong>PHP</strong> Code<br />
}<br />
• Beispiel<br />
for($x = 1; $x < 10; $x++) {<br />
echo „Aktueller Wert von x = „.$x;<br />
}
• For-Each - Schleife<br />
• Schleife für iterierbare Elemente (z.B.: Array)<br />
$arr = array();<br />
$arr[‚ab‘] = „Erster Eintrag“;<br />
$arr[‚cd‘] = „Zweiter Eintrag“;<br />
foreach($arr as $key => $value) {<br />
echo „Element $key mit Wert $value“;<br />
}
• Sind Arrays, die Daten von <strong>PHP</strong> bzw. über den<br />
Webserver beinhalten und somit dem Programmierer<br />
zugänglich gemacht werden.<br />
• Arten<br />
• Arrays mit Daten über den Webserver / <strong>PHP</strong><br />
• Arrays mit Daten über Benutzereingaben<br />
• Beginnen immer mit $_<br />
• $_POST<br />
• $_GET<br />
• …
• $_POST Array<br />
• Liefert Inhalte, die mittels POST übertragen<br />
werden (z.B. aus einem HTML Formular).<br />
• Wenn es z.B. das Formularfeld „name“ gibt, wird<br />
dieses mit $_POST[‚name‘] ausgelesen.<br />
• $_GET Array<br />
• Wie beim $_POST Array, nur bei der GET<br />
Anweisung.
• $_FILES<br />
• Beinhaltet Informationen über alle Dateien, die<br />
auf den Server hochgeladen wurden.<br />
• Jedes Arrayelement beinhaltet die Informationen<br />
▪ name<br />
▪ type<br />
▪ tmp_name<br />
▪ error<br />
▪ size<br />
Name der Datei<br />
Mime-Type<br />
Temporärer Name auf dem Server<br />
Fehlercode<br />
Größe der Datei in Byte
• $_FILES<br />
• Beispielausgabe mittels print_r($_FILES)<br />
Array<br />
(<br />
[uploadFile] => Array<br />
(<br />
[name] => datei.txt<br />
[type] => text/plain<br />
[tmp_name] => C:\xampp\tmp\php102.tmp<br />
[error] => 0<br />
[size] => 102<br />
)<br />
)
• $_REQUEST<br />
• Sammelarray für Benutzereingaben / Werte<br />
• Beinhaltet unter anderem Werte aus den Arrays<br />
▪ $_POST<br />
▪ $_GET<br />
▪ $_COOKIE
• $_COOKIE<br />
• Cookies<br />
▪ sind kleine Informationsspeicher auf dem Client<br />
▪ haben eine bestimmte Lebensdauer.<br />
• Anwendungsbeispiele<br />
▪ Speichern von Kundendaten<br />
▪ Session ID speichern<br />
▪ Einkaufswagen im Onlineshop<br />
▪ …<br />
• $_COOKE[‚Keksname‘] liefert entsprechendes Cookie
• $_SESSION<br />
• Eine Session wird beim Start des Clients (Browser)<br />
angelegt und identifiziert diesen eindeutig.<br />
• Anwendungsgebiete<br />
▪ Übergabe von Informationen zwischen <strong>PHP</strong> Skripts auf<br />
einer Webseite.<br />
▪ Anmeldung als User über eine bestimmte Zeit.<br />
▪ …<br />
• Mit $_SESSION[‚session-id‘] kann der Inhalt der<br />
Session mit der ID ‚session-id‘ abgerufen werden.
• $_SERVER<br />
• Enthält Informationen über den HTTP Header der aktuellen<br />
Anfrage, sowie lokale Pfade des Betriebssystems und Skriptes.<br />
• Wichtige Einträge<br />
• $_SERVER[‚DOCUMENT_ROOT‘]<br />
▪ Webverzeichnis<br />
• $_SERVER[‚<strong>PHP</strong>_SELF‘]<br />
▪ Relativer Pfad im Webverzeichnis<br />
• $_SERVER[‚HTTP_USER_AGENT‘]<br />
▪ Enthält Identifier über verwendeten Browser<br />
• $_SERVER[‚HTTP_REFERER‘]<br />
▪ Enthält letzte Website, wenn verlinkt. Sonst leer
• $GLOBALS<br />
• Enthält alle Referenzen aus den superglobalen<br />
Arrays<br />
• z.B.<br />
▪ $GLOBALS[‚_POST‘][‚file‘]
• Unter anderem bei der Fehlersuche von<br />
Interesse.<br />
• __LINE__<br />
▪ Aktuelle Zeilennummer<br />
• __FILE__<br />
▪ Aktueller Pfad des ausgeführten Skripts<br />
• __FUNCTION__<br />
▪ Aktuelle Funktion
• Skript kann jederzeit mit der Funktion<br />
die($msg); beendet werden.<br />
if($fehler) {<br />
}<br />
die(„Es ist ein Fehler in Zeile „.__LINE__.“<br />
aufgetreten“);
• Callback zur Fehlerbehandlung<br />
• Es kann eine Callback-Funktion registriert werden, die im<br />
Fehlerfall aufgerufen wird.<br />
• Ermöglicht eine individuelle Fehlerausgabe.<br />
• Registrieren der Callbackfunktion<br />
mixed set_error_handler($callback [, int $typ]);<br />
• Callback – Signatur<br />
funktionsname($fehlernr, $fehlertext [,$fehlerskript [, $fehlerzeile [,<br />
array $fehlerkontext]]])
• Callback zur Fehlerbehandlung (Beispiel)<br />
• <strong>PHP</strong> Skripte können andere Dateien zur<br />
Laufzeit inkludieren.<br />
• Mehrfach verwendeter Code kann so in eine Datei<br />
ausgelagert werden.<br />
• Externe Bibliotheken / Skripte müssen ebenfalls<br />
auf diese Art eingebunden werden
• Inkludieren mit include(Datei)<br />
• Sucht die Datei und liest den Code aus der Datei<br />
an die Stelle der include Anweisung.<br />
• Wenn ein Fehler beim inkludieren auftritt, wird<br />
eine Warnung ausgegeben.<br />
• Inkludieren mit require(Datei)<br />
• Sucht die Datei und liest den Code aus der Datei<br />
an die Stelle der require Anweisung.<br />
• Wenn ein Fehler beim inkludieren auftritt, wird<br />
das Skript mit einem Fehler abgebrochen.
• Problem<br />
• Wenn include(‚DateiXY‘) öfters ausgeführt wird,<br />
kann es z.B. passieren, dass eine Variable,<br />
Funktion, Klasse öfters definiert wird => FEHLER<br />
• Lösung:<br />
• include_once(Datei);<br />
• require_once(Datei);<br />
• Funktion wie include bzw. require, nur wird eine<br />
Datei bei mehrmaliger Ausführung nur einmal<br />
inkludiert!