PHP Tutorial
Erste Schritte mit PHP
Suche…
Bemerkungen
PHP (rekursives Akronym für PHP: Hypertext Preprocessor) ist eine weit verbreitete Open-Source-Programmiersprache. Es ist besonders für die Webentwicklung geeignet. Das Einzigartige an PHP ist, dass es sowohl Anfängern als auch erfahrenen Entwicklern dient. Es hat eine geringe Eintrittsbarriere, so dass es einfach ist, mit dem Einstieg zu beginnen, und bietet gleichzeitig erweiterte Funktionen, die in anderen Programmiersprachen angeboten werden.
Open Source
Es ist ein Open-Source-Projekt. Fühlen Sie sich frei, sich zu engagieren .
Sprachspezifikation
PHP hat eine Sprachspezifikation .
Unterstützte Versionen
Derzeit gibt es drei unterstützte Versionen : 5.6, 7.0 und 7.1.
Jeder Release-Zweig von PHP wird ab seiner stabilen Version zwei Jahre lang vollständig unterstützt. Nach dieser zweijährigen aktiven Unterstützung wird jede Niederlassung nur für kritische Sicherheitsprobleme für ein weiteres Jahr unterstützt. Veröffentlichungen in diesem Zeitraum werden nach Bedarf vorgenommen: Je nach Anzahl der Berichte gibt es möglicherweise mehrere Veröffentlichungen oder keine.
Nicht unterstützte Versionen
Sobald die drei Jahre der Unterstützung abgeschlossen sind, hat die Niederlassung ihr Ende erreicht und wird nicht mehr unterstützt.
Eine Tabelle mit den Lebensabendniederlassungen ist verfügbar.
Issue Tracker
Fehler und andere Probleme werden unter https://bugs.php.net/ nachverfolgt.
Mailinglisten
Diskussionen über die Entwicklung und Verwendung von PHP finden auf den PHP-Mailinglisten statt .
Offizielle Dokumentation
Bitte helfen Sie bei der Pflege oder Übersetzung der offiziellen PHP-Dokumentation .
Sie können den Editor unter edit.php.net verwenden . Schauen Sie sich unseren Leitfaden für Mitwirkende an .
Versionen
PHP 7.x
Ausführung | Unterstützt bis | Veröffentlichungsdatum |
---|---|---|
7.1 | 2019-12-01 | 2016-12-01 |
7,0 | 2018-12-03 | 2015-12-03 |
PHP 5.x
Ausführung | Unterstützt bis | Veröffentlichungsdatum |
---|---|---|
5.6 | 2018-12-31 | 2014-08-28 |
5.5 | 2016-07-21 | 2013-06-20 |
5.4 | 2015-09-03 | 2012-03-01 |
5.3 | 2014-08-14 | 2009-06-30 |
5.2 | 2011-01-06 | 2006-11-02 |
5.1 | 2006-08-24 | 2005-11-24 |
5,0 | 2005-09-05 | 2004-07-13 |
PHP 4.x
Ausführung | Unterstützt bis | Veröffentlichungsdatum |
---|---|---|
4.4 | 2008-08-07 | 2005-07-11 |
4.3 | 2005-03-31 | 2002-12-27 |
4.2 | 2002-09-06 | 2002-04-22 |
4.1 | 2002-03-12 | 2001-12-10 |
4,0 | 2001-06-23 | 2000-05-22 |
Legacy-Versionen
Ausführung | Unterstützt bis | Veröffentlichungsdatum |
---|---|---|
3,0 | 2000-10-20 | 1998-06-06 |
2,0 | 1997-11-01 | |
1,0 | 1995-06-08 |
HTML-Ausgabe vom Webserver
Mit PHP können Sie HTML-Dateien Inhalt hinzufügen. Während HTML direkt von einem Webbrowser verarbeitet wird, werden PHP-Skripts von einem Webserver ausgeführt und der resultierende HTML-Code wird an den Browser gesendet.
Das folgende HTML-Markup enthält eine PHP-Anweisung, die Hello World!
zur Ausgabe:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p><?php echo "Hello world!"; ?></p>
</body>
</html>
Wenn dies als PHP-Skript gespeichert und von einem Webserver ausgeführt wird, wird der folgende HTML-Code an den Browser des Benutzers gesendet:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
echo
verfügt auch über eine Abkürzungssyntax, mit der Sie einen Wert sofort drucken können. Vor PHP 5.4.0 funktioniert diese kurze Syntax nur, wenn die Konfigurationseinstellung short_open_tag aktiviert ist.
Betrachten Sie zum Beispiel den folgenden Code:
<p><?= "Hello world!" ?></p>
Seine Ausgabe ist identisch mit der Ausgabe von Folgendem:
<p><?php echo "Hello world!"; ?></p>
In realen Anwendungen sollten alle von PHP an eine HTML-Seite ausgegebenen Daten ordnungsgemäß geschützt werden , um XSS - Angriffe ( Cross-Site-Scripting ) oder Textbeschädigung zu verhindern.
Siehe auch: Strings und PSR-1 , in dem Best Practices beschrieben werden, einschließlich der richtigen Verwendung von kurzen Tags ( <?= ... ?>
).
Nicht-HTML-Ausgabe vom Webserver
In einigen Fällen muss bei der Arbeit mit einem Webserver der Standardinhaltstyp des Webservers überschrieben werden. Es kann Fälle geben, in denen Sie Daten als plain text
, JSON
oder XML
senden müssen.
Die header()
Funktion kann einen rohen HTTP-Header senden. Sie können den Content-Type
Header hinzufügen, um den Browser über den Inhalt zu informieren, den wir senden.
Betrachten Sie den folgenden Code, in dem wir Content-Type
als text/plain
festlegen:
header("Content-Type: text/plain");
echo "Hello World";
Dadurch wird ein Nur-Text-Dokument mit folgendem Inhalt erstellt:
Hallo Welt
Verwenden Sie zum Erstellen von JSON- Inhalt stattdessen den Inhaltstyp application/json
:
header("Content-Type: application/json");
// Create a PHP data array.
$data = ["response" => "Hello World"];
// json_encode will convert it to a valid JSON string.
echo json_encode($data);
Dadurch wird ein Dokument vom Typ application/json
mit folgendem Inhalt erstellt:
{"Antwort": "Hallo Welt"}
Beachten Sie, dass die header()
Funktion aufgerufen werden muss, bevor PHP Ausgaben ausgibt, oder der Webserver hat bereits Header für die Antwort gesendet. Betrachten Sie den folgenden Code:
// Error: We cannot send any output before the headers
echo "Hello";
// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";
Daraufhin wird eine Warnung ausgegeben:
Warnung: Die Header-Informationen können nicht geändert werden - Header, die bereits von (Ausgabe unter /dir/example.php:2) in /dir/example.php in Zeile 3 gesendet wurden
Bei Verwendung von header()
muss die Ausgabe das erste Byte sein, das vom Server gesendet wird. Aus diesem Grund ist es wichtig, dass vor dem PHP-Starttag <?php
keine leeren Zeilen oder Leerzeichen am Anfang der Datei stehen. Aus dem gleichen Grunde ist es am beste Praxis betrachtet (siehe PSR-2 ) , um den PHP - End - Tag weglassen ?>
Von Dateien , die nur PHP und aus Blöcken von PHP - Code am Ende einer Datei enthalten.
Sehen Sie sich die Ausgabepufferung an, um zu erfahren, wie Sie Ihren Inhalt in eine Variable "einfangen" können, um sie später auszugeben, beispielsweise nach der Ausgabe von Kopfzeilen.
Hallo Welt!
Das am häufigsten verwendete Sprachkonstrukt zum Drucken von Ausgaben in PHP ist echo
:
echo "Hello, World!\n";
Alternativ können Sie auch print
:
print "Hello, World!\n";
Beide Anweisungen haben dieselbe Funktion mit geringfügigen Unterschieden:
-
echo
hat einevoid
Rückgabe, wohingegenprint
einint
mit dem Wert1
zurückgibt -
echo
kann mehrere Argumente annehmen (nur ohne Klammern), währendprint
nur ein Argument enthält -
echo
ist etwas schneller als dasprint
Sowohl echo
als auch print
sind Sprachkonstrukte, keine Funktionen. Das heißt, sie benötigen keine Klammern um ihre Argumente. Für die kosmetische Konsistenz der Funktionen können Klammern eingefügt werden. Umfangreiche Beispiele für die Verwendung von echo
und print
sind an anderer Stelle verfügbar .
Wie im folgenden Beispiel sind auch printf
C-Stil und verwandte Funktionen verfügbar:
printf("%s\n", "Hello, World!");
Eine ausführliche Einführung in die Ausgabe von Variablen in PHP finden Sie unter Den Wert einer Variablen ausgeben.
Anweisungstrennung
Wie die meisten anderen Sprachen im C-Stil wird jede Anweisung mit einem Semikolon abgeschlossen. Mit einem schließenden Tag wird auch die letzte Codezeile des PHP-Blocks beendet.
Wenn die letzte Zeile des PHP-Codes mit einem Semikolon endet, ist das schließende Tag optional, wenn nach dieser letzten Codezeile kein Code vorhanden ist. Zum Beispiel können wir das schließende Tag nach dem echo "No error";
im folgenden Beispiel:
<?php echo "No error"; // no closing tag is needed as long as there is no code below
Wenn jedoch auf Ihren PHP-Codeblock weiterer Code folgt, ist das schließende Tag nicht mehr optional:
<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
<body>
</body>
</html>
Wir können auch das Semikolon der letzten Anweisung in einem PHP-Codeblock weglassen, wenn dieser Codeblock ein schließendes Tag hat:
<?php echo "I hope this helps! :D";
echo "No error" ?>
Im Allgemeinen wird empfohlen, immer ein Semikolon und ein schließendes Tag für jeden PHP-Codeblock mit Ausnahme des letzten PHP-Codeblocks zu verwenden, wenn diesem PHP-Codeblock kein weiterer Code folgt.
Ihr Code sollte also grundsätzlich so aussehen:
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon but leave out the closing tag";
PHP-CLI
PHP kann auch direkt von der Befehlszeile aus über die CLI (Command Line Interface) ausgeführt werden.
CLI ist im Grunde dasselbe wie PHP von Webservern, mit Ausnahme einiger Unterschiede bei der Standardeingabe und -ausgabe.
Auslösen
Die PHP-CLI bietet vier Möglichkeiten, PHP-Code auszuführen:
- Standardeingabe. Führen Sie den
php
Befehl ohne Argumente aus, aber leiten Sie PHP-Code hinein:echo '<?php echo "Hello world!";' | php
- Dateiname als Argument Führen Sie den Befehl
php
mit dem Namen einer PHP-Quelldatei als erstes Argument aus:php hello_world.php
- Code als Argument. Verwenden Sie die Option
-r
im Befehlphp
, gefolgt vom auszuführenden Code. Die<?php
open-Tags sind nicht erforderlich, da alles im Argument als PHP-Code betrachtet wird:php -r 'echo "Hello world!";'
- Interaktive Schale. Verwenden Sie die Option
-a
im Befehlphp
, um eine interaktive Shell zu starten. Dann geben Sie PHP-Code ein (oder fügen ihn ein) und drücken Sie die Eingabetaste$ php -a Interactive mode enabled php > echo "Hello world!"; Hello world!
Ausgabe
Alle Funktionen oder Steuerelemente, die eine HTML-Ausgabe im Webserver PHP erzeugen, können verwendet werden, um eine Ausgabe im stdout-Stream (Dateideskriptor 1) zu erzeugen, und alle Aktionen, die eine Ausgabe in Fehlerprotokollen im Webserver PHP erzeugen, erzeugen eine Ausgabe im stderr-Stream (Datei Deskriptor 2).
Example.php
<?php
echo "Stdout 1\n";
trigger_error("Stderr 2\n");
print_r("Stdout 3\n");
fwrite(STDERR, "Stderr 4\n");
throw new RuntimeException("Stderr 5\n");
?>
Stdout 6
Shell-Befehlszeile $ php Example.php 2>stderr.log >stdout.log;\
> echo STDOUT; cat stdout.log; echo;\
> echo STDERR; cat stderr.log\
STDOUT
Stdout 1
Stdout 3
STDERR
Stderr 4
PHP Notice: Stderr 2
in /Example.php on line 3
PHP Fatal error: Uncaught RuntimeException: Stderr 5
in /Example.php:6
Stack trace:
#0 {main}
thrown in /Example.php on line 6
Eingang
Siehe: Befehlszeilenschnittstelle (CLI)
Eingebauter PHP-Server
PHP 5.4+ verfügt über einen integrierten Entwicklungsserver. Es kann zum Ausführen von Anwendungen verwendet werden, ohne dass ein Produktions-HTTP-Server wie Nginx oder Apache installiert werden muss. Der eingebaute Server ist nur für Entwicklungs- und Testzwecke bestimmt.
Es kann mit dem -S
Flag gestartet werden:
php -S <host/ip>:<port>
Verwendungsbeispiel
- Erstellen Sie eine
index.php
Datei, dieindex.php
enthält:
<?php
echo "Hello World from built-in PHP server";
Führen Sie den Befehl
php -S localhost:8080
über die Befehlszeile aus. Fügen Sie nichthttp://
. Dadurch wird ein Webserver gestartet, der an Port 8080 das aktuelle Verzeichnis verwendet, in dem Sie sich als Dokumentstammverzeichnis befinden.Öffnen Sie den Browser und navigieren Sie zu
http://localhost:8080
. Sie sollten Ihre "Hello World" -Seite sehen.
Aufbau
Um das Standard-Dokumentstammverzeichnis (dh das aktuelle Verzeichnis) zu überschreiben, verwenden Sie das Flag -t
:
php -S <host/ip>:<port> -t <directory>
Wenn Sie beispielsweise ein public/
Verzeichnis in Ihrem Projekt haben, können Sie Ihr Projekt von diesem Verzeichnis aus mit php -S localhost:8080 -t public/
bedienen php -S localhost:8080 -t public/
.
Protokolle
Bei jeder Anforderung vom Entwicklungsserver wird ein Protokolleintrag wie der folgende in die Befehlszeile geschrieben.
[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
PHP-Tags
Es gibt drei Arten von Tags, um PHP-Blöcke in einer Datei zu kennzeichnen. Der PHP-Parser sucht nach den öffnenden und (falls vorhanden) schließenden Tags, um den zu interpretierenden Code zu begrenzen.
Standard-Tags
Diese Tags sind die Standardmethode zum Einbetten von PHP-Code in eine Datei.
<?php
echo "Hello World";
?>
Echo-Tags
Diese Tags stehen in allen PHP-Versionen zur Verfügung und sind seit PHP 5.4 immer aktiviert. In früheren Versionen konnten Echo-Tags nur in Verbindung mit kurzen Tags aktiviert werden.
<?= "Hello World" ?>
Kurze Tags
Sie können diese Tags mit der Option short_open_tag
deaktivieren oder aktivieren.
<?
echo "Hello World";
?>
Kurze Tags:
- sind in allen wichtigen PHP- Codierungsstandards nicht zulässig
- werden in der offiziellen Dokumentation nicht empfohlen
- sind in den meisten Distributionen standardmäßig deaktiviert
- Inline XML-Verarbeitungsanweisungen stören
- werden von den meisten Open Source-Projekten nicht in Code-Einreichungen akzeptiert
ASP-Tags
Durch Aktivieren der Option asp_tags
können Tags im ASP-Stil verwendet werden.
<%
echo "Hello World";
%>
Dies ist eine historische Eigenart und sollte niemals verwendet werden. Sie wurden in PHP 7.0 entfernt.