(created) |
(No difference)
|
Revision as of 21:27, 1 December 2009
Hallo Welt
PHP (PHP Hypertext Processor) ist eine serverseitige Programmiersprache. Der Quellcode wird am Server interpretiert und erzeugt HTML, das dann an den Browser übertragen wird. Im Gegensatz dazu ist JavaScript eine clientseitige Programmiersprache.
Da PHP HTML erzeugt, ist die Kenntnis von HTML Grundvoraussetzung zum Verständnis der Sprache.
Um PHP benutzen zu können, brauchen wir einen Server, der PHP Dateien interpretieren kann. Viele Hoster bieten Webserver an, die über PHP verfügen. Zum Entwickeln benutzen wir eine einfach zu installierende lokale Version: XAMP.
XAMP steht für:
- X: Platzhalter für das Betriebssystem; gängig sind
- A: Apache - ein Open Source Webserver
- M: MySQL - eine Open Source Datenbank
- P: PHP - Open Source PHP Parser
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>php</title>
</head>
<body>
<?php
echo ("<p>Hallo Welt!</p>");
echo ("<p>Da hat um " . date("H:s") . " Uhr jemand <i>Yippee!</i> gerufen...</p>");
?>
</body>
</html>
Übrigens: Wer Mac OS X oder Linux benutzt, hat meistens schon PHP auf dem Rechner! Öffne die Konsole bzw. das Terminal und tippe:
php -info
Zum schnellen Testen von PHP Zeilen auf der Konsole kann man php -r (für "run") verwenden; der PHP-Ausdruck muss dabei in Anführungszeichen stehen:
php -r "echo('Hallo Welt!');"
Mischen von PHP und HTML
PHP Quellcode wird mit den Schlüsselzeichen <?php und ?> umgeben. Man kann HTML und PHP mischen!
<p>Hallo <?php echo ("Welt"); ?>!</p>
<?php
$a = true;
if($a) { ?>
<p>Die Variable a ist true!</p>
<?php } else { ?>
<p>Die Variable a ist false!</p>
<?php } ?>
Kommentare
Übersicht Kommentarfunktion in HTML, CSS, JavaScript und PHP:
Sprachen | Syntax |
HTML | <!-- Mehrzeiliger Kommentar --> |
PHP, JavaScript, CSS | /* Mehrzeiliger Kommentar */ |
PHP, JavaScript | // Einzeiliger Kommentar |
PHP | # Einzeiliger Kommentar |
Variablen
Variablen in PHP haben immer ein $-Zeichen vorgestellt! Variablennamen sollten niemals mit einem _ (Unterstrich) beginnen (z.B. $_date), da systemrelevante Variablen diese Kennzeichnung haben. Variablen sind case-sensitive, d.h. $a ist eine andere Variable als $A.
Im Gegensatz zu vielen anderen Sprachen, haben Variablen in PHP keine explizite Typ-Zuweisung (non-typecasted), d.h. eine Variable kann Werte beliebiger Typen enthalten, z.B. bool, int, long, float, double, string, array ...
$a = 5;
$b = "4";
$c = $a + $b;
echo("Das Ergebnis ist " . $c . "!"); // Das Ergebnis ist die Zahl 9
Im Gegensatz zu JavaScript gibt es hier keine Rechenprobleme bei Additionen, da der String-Verkettungsoperator ein . (Punkt) ist (und kein "+" wie bei JavaScript) - und der PHP Parser denkt besser mit ;-)
Spezielle Variablen
Mit Vordefinierte Variablen kann man sehr einfach an wichtige Informationen kommen, z.B.
- $_GET['form_username'] - z.B. ein inputFeld eines Formulars
- $_SERVER['REQUEST_URI'] - die URI, die vom User verlangt wird (z.B. "http://url.de/index.php")
- $_SERVER['PATH_INFO'] - bei "http://url.de/index.php/some/stuff?foo=bar" => "/some/stuff"
Operatoren
Hier sind die wichtigsten Operatoren aufgeführt, eine vollständige Aufzählung gibt es bei php.net!
Operator | Zeichen | Beispiel |
---|---|---|
Zuweisungsoperator |
= += -= |
$a = 5; $a += 5; // $a = $a + 5; $a -= 5; // $a = $a - 5; |
Mathematische Operatoren |
+ - * / |
$a = 10 + 2; $a = 10 - 2; $a = 10 * 2; $a = 10 / 2; |
Verkettungsoperator | . |
echo("Hallo " . "Welt"); |
Logische Operatoren |
== !, != <, <= >, >= &&, and ||, or xor |
if($a == true) {...} if(!$a) { // oder if($a != true)... if($a >= 0) {...} if(($a > 0) && ($a <= 10)) {...} if($a && $b) {...} if(($a=="Hans") || ($a=="Fritz")) {...} if($a xor $b) {...} |
Inkrement/Dekrement-Operatoren |
++ -- |
$a++; // Post-Inkrement ($a = $a + 1;)
$a--; // Post-Dekrement ($a = $a - 1;) |
Funktionen
Funktionen sind gruppierte Einheiten, die eine bestimmte Aufgabe lösen. Eine Funktion erkennt man (wie in vielen anderen Sprachen auch) an den beiden runden Klammern. Üblicherweise sollten Funktionen durch ein Verb benannt sein. Z.B. doSomething(); oder getItem();.
Das Semikolon schließt einen Ausdruck ab. Zeilensprünge oder Leerzeichen sind unrelevant; der PHP Parser sieht alles als eine "Zeile" an, bis er auf ein Semikolon trifft.
function myFunction($paramA, $paramB) {
$ergebnis = $paramA + $paramB;
return $ergebnis;
}
// Aufrufen einer Funktion:
$x = myFunction(4, 5); // $x ist 9
Funktionen können optionale Parameter enthalten:
function myFunction($paramA, $paramB = 10) {
$ergebnis = $paramA + $paramB;
return $ergebnis;
}
// Aufrufen der Funktion:
$x = myFunction(4, 5); // $x ist 9
// oder
$x = myFunction(4); // $x ist 14
PHP besitzt sehr, sehr viele bereits vorhandene Funktionen! Deshalb ist die Kunst, PHP zu programmieren eigentlich nur die Kunst, in der Funktionsreferenz nachschlagen zu können:
Wenn man z.B. Text suchen und ersetzen möchte, dann befindet man sich in der Kategorie Strings, also sollte man string replace in das Funktionssuchfeld eingeben (meistens beginnen String-Funktionen auch mit str). In diesem Fall würde man unter str_replace fündig.
In der Funktionsreferenz ist die entscheidende Angabe, wie die Funktion str_replace funktioniert:
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
mixed meint, dass der Variablen-Typ unterschiedlich sein kann:
- mixed am Anfang meint den zurückgegebenen Wert, in diesem Fall also den ersetzten String
- str_replace ist der Funktionsname
- $search erwartet das Ersetzte (alt)
- $replace erwartet das Ersetzende (neu)
- $subject erwartet den zu durchsuchenden String
- alle anderen Angaben, die in eckigen Klammern stehen sind optional
Wenn wir also im String $myString alle Vorkommen von "Hans" durch "Fritz" ersetzen wollen, dann:
$myString = "Hans geht in die Welt."
$ergebnis = str_replace("Hans", "Fritz", $myString);
Includes
Eine der tollen Funktionen von PHP ist die Möglichkeit, Dateien einzubetten. So kann man z.B. PHP einsetzen, um eine HTML-Datei aus einem Header, dem eigentlichen Content (variabel) und einem Footer zusammenzusetzen.
Dies kann man mit include("Link/zur/Datei.inc.php"); machen.
Wichtig: Es ist darauf zu achten, dass PHP-Skripte immer mit der Endung .php oder .php5 abgespeichert werden, da das Skript ansonsten quelloffen als Textdatei gesendet wird! Das sieht dann nicht nur doof aus, sondern stellt auch ein Sicherheitsrisiko dar, da in PHP-Dateien oft sensible Informationen, wie Datenbanknamen und -passwörter gespeichert sein können!
Nehmen wir an, wir haben eine Datei "header.inc.php":
<html>
<head>
<title>Super Webpage</title>
<meta keywords="..."/>
</head>
<body>
<div id="menu">...hier kommt ein menü</div>
<div id="content">
dann eine Datei "kontakt.inc.php":
<p>Mein Kontakt: ...</p>
dann eine Datei "impressum.inc.php"
<p>Das Impressum...</p>
</body>
...und schließlich eine Datei "footer.inc.php":
</div><!-- div id="content" ende -->
<div id="legal">blah blah copyright blah</div>
</body>
Nun legen wir eine Datei "index.php" an:
// include header
include("header.inc.php");
// first, check if any parameter given, eg: index.php?id=kontakt
if(isset($_GET['id'])) {
$id = $_GET['id'];
} else {
// default to kontakt
$id = kontakt;
}
// now include content
include($id . "inc.php");
// include footer
include("footer.inc.php");
Natürlich fehlt hier eine Fehlerprüfung, z.B. wenn es ein Dokument nicht gibt, aber im Prinzip ist das schon ein ziemlich einfaches CMS :)
Kontrollstrukturen
Als Kontrollstruktur bezeichnet man Abfragen und Schleifen. Die in PHP vorhandenen Kontrollstrukturen sind fast gleich wie die in anderen Sprachen (C, JavaScript u.v.a.). Folgend werden die gängigsten vorgestellt. Weitere Beispiele bei php.net (Kontrollstrukturen).
if then else
if($a) {
// do something
} else {
// do something
}
switch case
switch($a) {
case 0:
// do something
break;
case 1:
// do something
break;
default:
// do something
break;
}
for, while, foreach
// for(Ausgangszustand; Endzustand; Schleifen-Operation) { ... }
for($a=0; $a<10; $a++) {
// do something
if($b = 5) {
break; // siehe auch continue; und exit;
}
}
// while(Bedingungszustand) { ... }
while($a > 10) {
echo ("Countdown: ".$a."<br/>");
$a--;
}
Bei Schleifen ist unbedingt darauf zu achten, dass sie sich nicht "aufhängen". So etwas wäre beispielsweise fatal, weil es sich um eine endlose Schleife handelt:
for($a=0; $a>=0; $a++) { ... }
Ressourcen
- php.net
- php.net Sprachreferenz
- php.net Funktionsreferenz
- php Funktionsreferenz-Suche
- Quake PHP Tutorial
- PHP FAQ
- Galileo OpenBook PHP
- WikiBooks: PHP
Diese Seite ist Teil der Werkmodule Grundlagen der Webprogrammierung und WebApps - Grundlagen Webprogrammierung von Michael Markert für Interface Design / Fakultät Medien an der Bauhaus-Universität Weimar.