- PHP Bereich
- <?php ?>
<? ?>
- Kommentare
- // Kommentar
# Kommentar
/* Kommentar */
- Variablen prüfen
- if (isset($a)) // prüft ob eine Variable definiert wurde
if (empty($a)) // true , falls $a=0 oder $a=false, $a="" oder $a nicht definiert ist
- Variablen untersuchen
-
if (is_integer($a)) // Variablentyp prüfen: is_string, is_array, is_bool, is_double
if (is_numeric ($a)) // prüft ob das Zahlen sind
- Abfrage Variablentyp
- gettype ($a); // Typ einer Variable
- Variablentyp setzen
- settype ($a, string); // integer, double, string, boolean
$neu = (integer) $a; // Cast
- Variable löschen
- unset ($a);
- Konstante define
- define ("A", "Wert"); // echo A;
- Zeiger
- $a = &$b; // $b ändert sich mit, wenn sich der Wert von $a verändert
- Dynamische Variable
- $a = "b"; $$a = 3; // $b ist 3
- Globale Variable und Umgebungsvariablen
-
$GLOBALS["a"] // Zugriff auf globale Variablen, also z.B. innerhalb einer Funktion
$_SERVER['SERVER_NAME'] // aogo.de
$_SERVER['HTTP_USER_AGENT'] // Name und Versionsnummer des Browsers
$_SERVER['GEOIP_REGION_NAME'] // Berlin, sehr viele weitere
$argv // Array enthält an das Script übergebende Argumenten
php.net
- Magische Konstanten
- echo __FILE__ // /www/htdocs/aogo/test.php
echo __DIR__ // /www/htdocs/aogo/
echo __LINE__ // 22
echo __METHOD__ // Auto::fahr Klasse und Methode
- Variablen ausgeben
- echo "Hallo {$a[44]} und nun";
- Variableninformation
- var_dump ($a); // Ausgabe z.B. string(3) "abc"
print_r ($a); // Arrays und Objekten
- Absoluter Wert
- abs (-4); // 4
- Zuweisungsoperator
- $a += 5; // entspricht $a = $a + 5;
- Modulo Operator
- if (22 % 2 == 0); //Prüft ob gerade
- Zahlen formatieren
- number_format (1550, 2, ",", "."); // 1.550,00; Zahl, Nachkommastellen,
Dezimalzeichen, Tausenderzeichen
number_format (1550, 2); // 1,550.00;
- Runden
-
round (14.34); // 14
ceil (9.3); // 10 aufrunden
floor (9.8); // 9 abrunden
- Potenzieren
-
pow(3,4); // 3 hoch 4
sqrt(4) // Wurzel aus 4 ist 2
- Maximalwert
Minimalwert
- max (2,4,3,6); // 6 auch arrays sind so prüfbar
min (2,4,3,6); // 2
- Zufallsgenerator
- $zufall=mt_rand(1,100); // Ganzzahlige Zufallszahlen
- Ausgabe
-
echo (nl2br(htmlspecialchars($zeile));
- Laufzeit verändern
-
set_time_limit(600); // Zeit zum ausführen manipulieren
- phpinfo
-
phpinfo(); // Eigenschaften der aktuellen Datei und der Server-Konfiguration
- flush
-
flush() // sendet Daten sofort an Browser
- Umleitung
-
header("Location: test.html"); // Es darf noch keine Ausgabe an den Browser gesendet worden sein
- Mail versenden
- mail("an@gmx.de","Betreff","Emailtext", "From: Name <von@gmx.de> \n Bcc: kopie@email.de \n Content-Type: text/html");
- Zeitunterbrechung
-
sleep(10); // 10 Sekunden Unterbrechung
- Verschlüsselung
-
md5("natoll und sowas"); // eb449714251ae9486c8e153fa421ee87
- Script unterbrechen
-
die ("Fehlerausgabe"); // Beenden mit Ausgabe
exit(); // Beenden ohne Ausgabe
- Fehler anzeigen
-
error_reporting (E_ALL);
- Code ausführen
-
eval ("echo \"Hallo $a\";"); // Hallo du
- Bildgröße
- $imgsize = getimagesize("img/bild.jpg"); // $imgsize[0] Breite [1] Höhe [2] Typ (1=GIF, 2=JPEG, 3=PNG) [3] IMG-Tag
- Beispiel GD Bibliothek
-
$bild = imagecreatetruecolor(300, 400); // erzeugt Bild - für Diagramme eignet sich gut GD Graph
imagefilledrectangle($bild, 10, 10, 190, 40, $rot); // Rechteck zeichen
- Array erstellen
- $a = array ("Uwe", "Tim", "Bob");
$a = array ("name" => "Bob", "alter" => 33); // Assoziatives Array
$a = array ("namen" => array (6 => 5, 11 => 4, "b" => 2)); // Mehrdimensionales Array
- Arrayelemente hinzufügen
- $a[] = 3; // Neues Element
$a["beruf"] = "Held";
- Arrayelemente voranstellen
- array_unshift ($a, "Apfel", "Birne"); // am Anfang eines Arrays hinzugefügt
- Arrayelement suchen
- if (in_array ("Suchbegriff", $a))
- Arrayschlüssel suchen
- if (array_key_exists ('Suchbegriff', $a))
- Arrayanzahl
- count ($a); // Zählt Anzahl der Array Elemente
- Arrayelemente löschen
- array_shift ($a); // löscht erstes Element
array_pop ($a); // löscht letztes Element
unset ($a["name"]); // bestimmtes Element löschen
unset ($a[1]); // bestimmtes Element löschen
- Arrays zusammenfügen
- $a = array_merge ($a1, $a2, $a3);
- Teil eines Arrays
- $b = array_slice ($a, Anfangsposition, Anzahl Elemente);
- Array umdrehen
- array_reverse ($a);
- Doppelte löschen
- array_unique ($a); // doppelte Einträge löschen
- Arrays sortieren
- $a = array ("Ampel", "Zebra", "Bär"); // brauch nicht in neuem Array gespeichert werden, wird auf $a dirket angewandt
sort ($a); // aufsteigend sortiert (Ampel, Bär, Zebra)
rsort ($a); // absteigend sortiert (Zebra, Bär, Ampel)
shuffle ($a); // erzeugt eine zufällige Reihenfolge
usort ($a,"funktion") // mit Hilfe einer Funktion, kann eine benutzerdefinierte Sortierung geschaffen werden
- Assoziative Arrays sortieren
- $a = array ("b" => "Ampel", "a" => "Zebra", "c" => "Bär");
asort ($a); // aufsteigend nach Value (b=Ampel, c=Bär, a=Zebra)
arsort ($a); // absteigend nach Value (a=Zebra, c=Bär, b=Ampel)
ksort ($a); // aufsteigend nach Key (a=Zebra, b=Ampel, c=Bär)
krsort ($a); // absteigend nach Key (c=Bär, b=Ampel, a=Zebra)
- Arrayelement filtern
- $n = array_filter ($a, "funktion"); // eine funktion wird aufgerufen, gibt diese wahr zurück, bleibt das Element bestehen
- Arrayelement suchen
- $key = array_search('Suchbegriff', $a); // Dursucht ein Array und liefert dazugehörigen Schlüssel
- Funktion auf jedes Arrayelement anwenden
- function fktname ( &$wert, $key, $m) // durch &$ werden die Werte im Array geändert
{ $wert = $wert*$m; } // jeder Wert im Array wird mal 5
array_walk ( $a, "fktname", 5 ); // letzter Parameter ist optional
genommen
- Array durchlaufen
- foreach ($a as $temp) { }
- Assoziatives Array durchlaufen
- foreach ($a as $key => $value) { }
- Array durchlaufen übersichtlich
-
echo "<table>";
foreach ($_SERVER as $key => $value) { echo "<tr><td>$key</td> <td>$value</td></tr>"; }
echo "</table>";
- Serialisieren
-
$serial_str = serialize ($a); // Das Array wird in einen formatieren Sring umgewandelt, den kann man z.B. in Cookie speichern
$a= unserialize ($serial_str); // Serialized String wird zurück in ein Array umgewandelt
- Array in Zeichen-kette umwandeln
-
$zeichkette = implode (" - ", $a); // Array wird zu einem String (1 - 2 - 3)
- Zeichenkette in Array umwandeln
- $a = explode ("-", "1 - 2 – 3");
- Weitere Array Funktionen
- php.net
- Fallunterscheidungen
- if ($a == 1 and $b != 1 ) { }
elseif ($a >= 1 or $b <= 1) { }
elseif ($a == 1 xor $b == 1) { } // nicht beide wahr
else { }
- Alternative Schreibweise
-
if ($a == 3) : echo 1; echo 2;
else : echo 3;
endif;
- Verkürte Schreibweise
- ($a == 1) ? echo "wahr" : echo "unwahr";
$variable = ( 1==1 ) ? echo "wahr" : echo "unwahr"; // $varialbe=true;
- Werte vergleichen
- $a="froh";
switch ($a)
{
case "froh":
echo "gut";
break; // muss geschrieben werden, sonst werden alle ausgeführt
case "traurig":
echo "schlecht";
break;
default: // für alles andere
echo "weiß nicht";
}
- While-Schleife
- while ($a <= 10)
{
$a++;
}
- Do-while-Schleife
- do
{
$a++;
}
while ($a <=10); // Block wird mindestens einmal durchlaufen
- For-Schleife
- for ($a=1; $a<=3; $a++) // 3 Durchläufe
{
echo "$a<br>";
}
- Schleifenabbruch
- break; // Beendet eine Schleife
- Schleifen-
unterbrechung
- continue; // Beendet aktuellen Durchlauf, aber nicht komplette Schleife
- Funktion
- function arbeit ($a) { $x=$a+5; return $x; } // Variablen gelten nur lokal; return beendet Funktion
$y = arbeit (4);
if (arbeit (10) < 15) { } // Funktion innerhalb einer Abfrage
- Funktion mit Defaultwert
- function arbeit ($a, $b = 4) { }
- Aufruf einer Funktion
- call_user_func ("arbeit", $a, $b); // Weitere Möglichkeit eine Funktion aufzurufen
- Globaler Variablen
-
global $a, $b; // sonst gilt eine Variable nur innerhalb oder ausserhalb einer Funktion; Aufruf innerhalb einer Funktion
$GLOBALS["a"] // Zugriff auf eine Variable ausserhalb einer Funktion
- Variablen erinnern
- static $c = 0; // mit Hilfe des Schlüsselworts static merkt sich die Variable den letzten Wert; $c ist 0 beim ersten Aufruf
- Referenzparameter
- function arbeit (&$w) { $w += 1; } // Der übergebende Parameter wird auch ausserhalb der Funktion verändert.
$a = 2; arbeit ($a); // $a=3
- Variablenfunktionen
- $f = "arbeit"; $f(2); // Funktion arbeit wird aufgerufen
- Argumentzugriff
-
$numargs = func_num_args(); // Liefert Anzahl von Funktionsargumenten; Aufruf innerhalb einer Funktion
echo "func_get_arg(1)"; // Zugriff auf Argumente
$a = func_get_args(); // Array aller übergebenden Parameter
- Formular erstellen
- <form action="<?php echo htmlspecialchars ($_SERVER["PHP_SELF"]); ?>" methode="POST"> // Post bei großen Datenmengen ; GET bei Suchanfragen
- Übergebene Variablen
- $_GET["name"];
$_POST["name"];
- Input
- <input type="text" name="wert" value="$a"> // Texteingabe
<input type="checkbox" name="a[]" value="Bob"> // Checkboxes Array
<input type="checkbox" name="a[]" value="Tim">
<input type="ratio" name="a" value="Bob"> // Radiobutton Name muss immer der selbe sein
<input type="ratio" name="a" value="Tim">
- Textfeld mit Zeilenumbruch
- nl2br($_GET["t"]; // \n wird in <br> umgewandelt
- Dateien hochgeladen
- $_FILES["feldname"]; // bei einem Bild prüfen, ob es auch eins ist (mime type mit getimagesize), außerdem sollte man Dateiendung prüfen
if (isset($_FILES["feldname"]) and ! $_FILES["error"]) {
if (@move_uploaded_file($_FILES["feldname"]["tmp_name"], "upload/" . basename ($_FILES["feldname"]["name"]))) echo
"Datei upload";
} // Daten werden kopiert in Ordner uploadbasename verkürzt Pfad auf Dateinamen, das @ untterdrückt
Fehlermeldungen
- Filtererweiterung
- if (filter_var($_GET["email"], FILTER_VALIDATE_EMAIL) === false) // damit lassen
sich Variablen überprüfen, hier ob s eine gültige Emailadresse ist.
if (filter_var($zahl, FILTER_VALIDATE_INT)) // prüft ob Eingabe Zahl ist
if (filter_var($seite, FILTER_VALIDATE_URL)) // URL
$optionen = array('options' => array('min_range' => 500, 'max_range' => 600));
if (filter_var($zahl,
FILTER_VALIDATE_INT, $optionen)) // Range
- Cross Site Scripting
- echo htmlspecialchars ($_GET("wert")); // wandelt Sonderzeichen um, sonst könnte
z.B. Javascript ins Formularfeld eingetragen werden
// außerdem könnte man mit in_array, srtlen oder anderen Funktionen, Eingaben einschränken oder
strip_tags
- SQL Injection
- in ein Passwortfeld könnte man ' or 1=1 schreiben, dadurch kommt man an Daten;
z.b. duch $passwort = mysqli_real_escape_string ($verbindung, $_POST['passwort']); vorher
codieren
- Allgemeine Sicherheitsinformationen
- keinen Inputs vertrauen
möglichst POST statt GET verwenden
Längen, Datentypen und Wertebereiche validieren
Session-Cookies schützen mit ini_set('session.cookie_httponly', true)
Keine kritischen Informationen in Sessions speichern
Magic Quotes und register_globals abschalten
- Cookie setzen
- setcookie ("name", "Werner", time()+(3600*24*7), "/"); // 7 Tage gültig, letzte
Angabe ist Pfad, sonst evtl. nur in Unterordner gültig; weitere Parameter optional
- Cookie auslesen
-
if (isset ($_COOKIE["name"])) echo htmlspecialchars($_COOKIE["name"]);
- Cookie löschen
- setcookie ("name");
- Session starten
- session_start (); // startet oder führt Session weiter aus; muss vor der ersten
Textausgabe stehen; um Sessions zu nutzen, muss Cookies aktiviert sein
- ID aktueller Session
- session_id (); // 13a99f8c9c64a0c
- Session Variablen
-
$_SESSION["name"] = "Marie"; // in Session speichern
if (isset ($_SESSION["name"])) echo $_SESSION["name"]; // Session Variable auslesen
- Sessionvariablen löschen
- session_unset ("name"); // löscht ein Sessionvariable
session_unset (); // löscht alle Sessionvariablen
- Session löschen
- $_SESSION = array(); // leeres Array; Session löschen z.B. beim Logout
setcookie (session_name(), "", time()-3600); // außerdem wird das Session Cookie gelöschht
session_destroy(); // außerdem Sitzung zerstörrt, um auf ganz sicher zu gehen
- Kodieren einer Session
- session_encode (); // Kodiert Session als Zeichenkette; a|s:9:"Wert";b|s:11:"Wert";
session_decode (); // Dekodiert Session
- Session Id ernuet erzeugen
- session_regenerate_id(); // behält Werte von Session und erzeute Session Schlüssel neu, dient zur Sicherheit
- Uhrzeit in Sekunden
- time (); // Anzahl Sekunden, seit dem 1.1.1970
- Zeitmarke mit getdate umwandeln
- $datum_array = getdate ();
$datum_array[seconds]; // minutes, hours, mday (Tag des Monats), wday, mon, year, yday
- Zeitmarke mit date umwandeln
- date ("d.m.y H:i:s", time()); // 02.03.01 04:22:59
date ("j.n.Y G:i:s", time()); // 2.3.2001 4:22:59
- Zeitmarke erzeugen
- $mk = mktime (Stunden, Minuten, Sekunde, Monat, Tag, Jahr);
- Zeitzone festlegen
- date_default_timezone_set("Europe/Berlin");
- Datum prüfen
- checkdate ($monat, $tag, $jahr); // prüft, ob es das Datum geben kann; 30 Februar gibt es nicht
- Microsekunden
- $t_a["start"]=microtime(); // Laufzeit eines Sripts testen
$t_a["end"]=microtime(); $t_a["time"] = $t_a["end"] - $t_a["start"]; echo "Zeit:".$t_a["time"]."<br>";
- Dateien prüfen
-
if (file_exists ("test.txt")) // Existenz
if (is_file ("text.txt")) // Datei
if (is_dir ("/ordner")) // Ordner
if (is_readable ("test.txt")) // Lesbarkeit
if (is_writeable ("test.txt")) // Schreibbarkeit
- Information über eine Datei
- filesize ("test.dat"); // Länge in Bytes (Zeichen gleich Byte)
filectime ("test.dat") // Datei erstellt, z.B. 12.09.1999
fileatime ("test.dat") // letzter Zugriff auf die Datei
filemtime ("test.dat") // Datei zuletzt geändert
- Informationen über Datei
- $info = stat(a.txt); // viele weitere Informationen
$info[7]; // Größe in Bytes
$info[8]; // timestamp letzter Zugriff
$info[10]; // Zeitpunkt der letzten Änderung
- Array aus Datei erzeugen
- $zeilen = file (datei.txt); // Zeilen werdn in Arrayelementen gespeichert
foreach ($zeilen as $zeile) { echo $zeile; }
- String aus einer Datei
- $d = file_get_contents ('datei.txt'); // gesammte Datei, wird in einer Variable gespeichert
- In Datei schreiben
- file_put_contents ('datei2.txt', 'Ho ho ho'); // Öffnet und schreib gekapselt in
einer Funktion
- Datei öffnen
- $fp = fopen ("http://www.hsv.de", "r"); // r (lesen), w (schreiben), a (anhängen), r+ (lesen und schreiben)
if (! $fp) exit ("Datei konnte nicht geöffnet werden");
- Datei schließen
- fclose ($fp); // zu jedem fopen ein fclose, sonst könnte die Datei evtl. nicht noch einmal geöffnet werden
- Zeilenweise lesen aus einer Datei
- while (!feof ($fp)) // Liest zum Zeilenvorschub und springt weiter, solange das Ende der Datei nicht erreicht ist.
{ $zeile = fgets ($fp); }
- Zeilenweise lesen ohne Html
- $zeile = fgetss ($fp); // entfernt HTML, PHP
- Zeichenweise lesen
- $zeichen = fread ($fp, 16); // Liest beliebig viele Zeichen
- Positinorierung
- fseek ($fp, 64);
- Positinorierung lesen
- ftell ($fp); // aktuelle Postition innerhalb der Datei
- In Datei schreiben
- fwrite ($fp, "Text"); // Text wird je nach Modus drangehängt oder ersetzt
fputs ($fp, "Text"); // Schreibt Daten an die Position des Dateizeigers
- Dateien sperren und entsperren
- flock ($fp,1); // 1 Leseschutz, 2 Schreibschutz, 3 Sperre aufheben, 4 keine Sperre,
Wichtig damit nicht 2 User gleichzeitig in eine Datei schreiben.
- Datei erstellen
- touch ("test.dat"); // erstellen
unlink ("test.dat"); // löschen
copy("../test.dat","kopie_test.dat"); // kopieren
- Ordner erstellen
- mkdir ("testdir", 0777); // Ordner erstellen
rmdir ("testdir"); // Ordner löschen
- Zugriffsrechte ändern
- chmod ("/ordner/index.htm",0777);
- Verzeichnishandle
-
if ($dh = opendir("/test")) {
while (($file = readdir($dh)) !== false) { echo "Name: $file<br>"; }
} closedir($dh); // kann mit z.B. stat untersucht werden
- Datei einbinden
- include ("test.php"); // Datei wird ausgegeben oder verarbeitet
require ("test.php"); // bei nicht vorhanden sein, wird das script angehalten
- Verkettung
- $a = "Hallo" . " Welt"; // Hallo Welt
- Zuweisungsoperator
-
$a .= "gut"; // entspricht $a = $a ."gut";
- Stringindizierung
- $a = "Text"; // $a[1] ist e
- HTML Sonderzeichen umwandeln
- htmlspecialchars("3 > 4 & \" "); // Soderzeichen werden im HTML Sonderzeichen umgewandelt, " wird in " umgewandelt
htmlspecialchars_decode (" "); // Sonderzeichen werden in normale Zeichen umgewandelt
- Entfernt HTML Tags
- strip_tags("<i>Text</i>"); // HTML werden entfernt
strip_tags("<i>Text</i>", "<p><i>"); // behalten werden <p> und <i>
- Zeilenumbrüche
- nl2br ("Text \n"); // Zu Zeilenumbrüchen wird <br> hinzugefügt
- Prüft ob Teilstring in Zeichenkette
- strstr ("Text", "ex"); // true
stristr ("Text", "EX"); // true Großkleinschreibung unbeachtet
- Länge Zeichenkette
- strlen ("Text"); // 4
- Teilzeichenkette extrahieren
- substr ("Rucksack", 4, 3); // sac
substr ("Rucksack", -3); // ack
- Zeichenkette ersetezen
- str_replace ("suchen", "ersetzen", "hier suchen"); // wird für alle gefunden durchgeführt
str_replace (array ("ä","Ä"), array ("ae","Ae"), "Ä ä"); // Ae ae
- Teilzeichenkette ersetzen
- substr_replace ("Rucksack", "Schlaf", 0, 4); // Schlafsack
- Position im String
- strpos ("Text", "x"); // 3 sucht erstes
strrpos ("Texte", "e"); // 5 sucht letztes
- Suchen und zählen
- substr_count ("Hello world. The world is world", "world"); // 3 Vorkomnisse
- Zeichenkette säubern
- trim (" Text 1 "); // beseitigt Leerzeichen und Tabulatoren
trim ("' Text 1 ", "'."); // Mit 2 Argument; einfache Anführungzeichen und Punkte werden am Anfang und am Ende entfernt
chop ("Text 1 "); // nur am Ende
ltrim (" Text 1"); // nur am Anfang
- URL in Array zerlegen
- $a = parse_url ("http://www.test.de/22/datei.htm?a=3");
// $a[scheme] Protokoll -- $a[host] www.test.de -- $a[path] 22/datei.htm -- $a[query] a=3 -- $a[user] Benutzer -- $a[pass] Passwort
- Text formatieren
- sprintf ("Text %04d", 36); // Text 0036 - Integer -- prinf () gibt den Inhalt direkt aus
sprintf ("%.2f", 5.3333) // 5.33 runden - Flieskommazahl
sprintf ("Text %s", A); // Text A - String
- Groß Kleinschreibung umwandeln
- strtoupper ("alles gross"); // ALLES GROSS
strtolower ("ALLES KlEIN"); // alles klein
ucwords ("capitalized words"); // Capitalized Words
- Passwörter in md5 hash speichern
- $passwort = md5 (Haus); // ebacf61946ee81f386960ad2a09a147e
- Kodieren
- base64_encode ($a); // kodieren: VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==
base64_decode ($a); // dekodieren
- Sonderzeichen kodieren
- awurldecode (Hans%20ist%20gr%F6%DFer); // Hansi ist größer
rawurlencode (Hansi ist größer); // Hans%20ist%20gr%F6%DFer
- Parse String
-
parse_str ("name=Otto&age=33"); // $name=Otto; $age=33
parse_str ("name=Otto&age=33",$a); //$a[name]=Otto
- Übereinstimmung
-
$a = similar_text ("abcd", "cbax", $p); // hier $a=1 und $p=25; gibt Anzahl an Übereinstimmung und Prozentangabe wieder
- Reguläre Ausdrücke
- preg_match ("/a.c/", "abcde", $erg); // findet nur ersten Treffer, gespeichert in $erg[0]; Funktion gibt true zurück; / heisst Begrenzer
"/^abc/" am Anfang des Strings
"/cde$/" am Ende des Strings
"/a.c/" beliebiges Zeichen
"/[^xy]/" beliebiges Zeichen, ausser x und y
"/[ax]bc/" a oder x
"/(abc|dfg)/" abc oder dfg
"/[a-z]bc/" Zeichenbereiche, weiter z.B. [0-9] oder [A-Za-z] für Groß- und Kleinbuchstaben
"/[a-z]*cd/" beliebig oft; Quantifizierer
"/[a-z]+cd/" mindest einmal
"/[a-z]?cd/" einmal oder keinmal
"/[a-z]{1,4}cd/" mindestens einmal, höchstens 4 mal
"/\"xyz/" findet "xyz \ Maskierung
"/\wabc/" Wortgrenze; weitere z.B. \s Whitespace, \d Ziffer, \w Wortzeichen
"/Abc/i" Groß und Kleinschreibung ignorieren; Modifizierer
"/[a-z]*cd/U" es wird nur minimale Zeichen eingesammelt, hier bcd ohne U, wäre es abcd
- Mehrere finden
-
preg_match_all ("/a.c/", "abcde axc", $erg); // findet alle Treffer, gespeichert in $erg[0][0] = abc; erg[0][1]= axc
- Suchen und ersetzen
-
$x = preg_replace ("/abc/", "xyz", "abcd"); // xyzd; jedes Vorkommins wird ersetzt; funktioniert auch mit arrays
- Array erzeugen mit regulären Ausdruck
-
$a = preg_split("/ /", "abc def");Array mit [0] abc und [1] def
- Klasse und Instanz
- class Auto { // Auto ist der Bauplan; beginnt üblicherweise mit großem Anfangsbuchstaben
public $farbe = "weiss"; // Eigenschaften eines Objekts
public $ps; }
$vw = new Auto; // Objekt wird erzeugt; Objekte sind konkreten Realisierungen einer Klassen;
$vw->farbe = "blau"; // Objekt Eigenschaft wird verändert
- Mehtoden
-
class Auto {
public $kmh=0;
public function fahr ($x) {
$this->kmh += $x; } } // $this ermöglicht Zugriff auf aktuelless Objekt
$vw = new Auto;
$vw->fahr(20); // Der Wert kmh wird, um 20 erhöht
- Zugriffsmodifizierer
- public $farbe; // lässt sich durch $vw->farbe="blau" setzen oder drauf zugreifen
private $farbe; // lässt sich nicht ausserhalb des Objektes ändern oder zugreifen
protected $farbe; // lässt sich nicht ausserhalb des Objektes ändern oder zugreifen, aber
in Vererbungsobjekten
- Konstruktor und Destruktor
- class Auto {
public function __construct($n) { // Diese Methode wird aufgerufen wenn ein Objekt erzeugt wird
echo $n;
$this->name = $n; } // name wird Eigenschaft des Objekts
public function __destruct() { // wird aufgerufen wenn ein Objekt zerstörrt wird
echo "weg"; } }
$vw = new Auto("Polo");
unset ($vw);
- Objekt Ausgabe
- class Auto {
function __toString() { // wird zurück gegeben, wenn objekt per echo aufgerufen wird
return echo "dies und das"; } }
$vw = new Auto();
echo $vw; // gibt "dies und das" aus
- Objekt Kopie
-
$audi = clone $vw; // Eine Kopie des Objekts Audi wird erstellt, durch Einsatz der Methode __clone() kann das neue Objekt verändert sein
- Objekte als Parameter und Rückgabewerte
-
class Auto {
private $farbe="rot";
function aus() { return $this->farbe; }
function col ($a) {
$erg = new Auto;
$erg->farbe = $a->farbe; Die Farbe des neuen Objekts ist die Farbe des übergebenden Objekts
return $erg; } }
$vw = new Auto;
$audi = new Auto;
echo $vw->col($audi)->aus(); // Objetkt wir an Methode von $vw übergeben, anderes Objekt entgegenommen und ausgegeben
- Vererbung
-
class Auto { // Elternklasse
public $kmh=0;
public function fahr ($x) {
$this->kmh += $x; } }
class Rennauto extends< Auto { // Rennauto Klasse erbt Eigenschaften und Methoden von Auto
function bonus($y) {
$y+=10;
parent::fahr($y); // Elternmethode direkt zugreifen
$this->kmh+=10; } } // Elterneingenschaft zugreifen
$porsche = new Rennauto;
$porsche-> fahr(5);
$porsche-> bonus(5); // Der Porsche wird auf 30 Beschleunigt
- Vererbung: final
- final public function fahr() { } // durch final kann es in der Vererbung nicht überschrieben weren
final class Auto // final vor einer Klasse, macht diese nicht mehr ableitbar
- Vererbung: abstract
-
abstract class Auto { // Abstrakt muss vor Klasse stehen und vor den betreffenden Methoden.
abstract public function fahr() } // Diese Methoden müssen in Unterklassen ersetzt werden und können nicht direkt aufgerufen werden
- Vorhandensein von Methoden erzwingen
- interface Zwang { public function fahr (); } // die hier aufgeführten Methoden müssen in der folgenden Klasse vorhanden sein
class Auto implements Zwang {
public function auto () {} } // wär die Methode nicht vorhanden, erschien eine Fehlermeldung
- Direktzugriff auf Methoden
-
class Auto {
public static $farbe = 2; // durch static, braucht ein Objekt nicht erstellt werden, man hat Direktzugriff
const k = 3; // Konstante ohne $
public static function fkt_a() { echo "1"; }
public static function fkt_b() {
echo self::$farbe; // Zugriff innerhalb einer Klasse
echo self::fkt_a(); // Bei statischen Methoden muss self anstatt this verwendet werden.
echo self::k; } }
echo Auto::fkt_b(); // 123
echo Auto::$farbe; // 2
- Eigenschaften merken
- class Auto { // mi Hilfe von static und self werden Instanzen gezählt
private static $zaehler = 0;
public function __construct() {
self::$zaehler++; // Mit Hilfe von self werden die erstellten Objekte gezählt
echo "Nummer " . self::$zaehler; } } jedes erstelltes Objekt hat neue Nummer
- Instanz prüfen
-
if ($vw instanceof Auto) echo "Das Objekt vw ist Instance der Klasse Auto";
- Hilfsfunktionen
-
echo (class_exists(Auto)); // 1
echo (get_class($vw)); // Auto
echo (get_parent_class(Auto)); // übergeordnete Klasse, hier keine
echo method_exists($vw, fahr); // 1
print_r (get_class_methods(Auto)); // funktioniert mit Auto und mit $vw -- Array mit [0]=>fahr
print_r (get_class_vars(Auto)); // Array ( [farbe] => weiss [ps] => [kmh] => )
print_r (get_object_vars($vw)); // Array ( [farbe] => blau [ps] => [kmh] => 20 )
print_r (get_declared_classes()); // Array mit vielen exestierenden Klassen und eigenen
- Serialisierung
-
$s = serialize($vw); // O:4:"Auto":2:{s:5:"farbe";s:4:"blau";s:2:"ps";N;} Objekt kann so abgespeichert werden
$vw = unserialize ($s) // Die zugehörige Klasse muss aufgeführt sein
- Fehlermeldungen
-
try { if (2>1) throw new Exception ('Ausnahme'); } // Bei Fehlern oder, wenn bewußt Ausnahme geworfen wird, wird catch aufgerufen
catch (Exception $e) { echo $e->getMessage(); exit; } // Bei Fehler im Bereich try, wird catch aufgerufen und das Objekt ausgegeben
Impressum: Gero Zickermann, Haasestr. 3, 10245 Berlin