PHPErste Schritte mit PHP

Bemerkungen

Geben Sie hier die Bildbeschreibung ein

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>
 
PHP 5.x 5.4

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 ( <?= ... ?> ).

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 eine void Rückgabe, wohingegen print ein int mit dem Wert 1 zurückgibt
  • echo kann mehrere Argumente annehmen (nur ohne Klammern), während print nur ein Argument enthält
  • echo ist etwas schneller als das print

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";
 

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.

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

  1. Erstellen Sie eine index.php Datei, die index.php enthält:
<?php
echo "Hello World from built-in PHP server";
 
  1. Führen Sie den Befehl php -S localhost:8080 über die Befehlszeile aus. Fügen Sie nicht http:// . Dadurch wird ein Webserver gestartet, der an Port 8080 das aktuelle Verzeichnis verwendet, in dem Sie sich als Dokumentstammverzeichnis befinden.

  2. Ö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-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:

  1. Standardeingabe. Führen Sie den php Befehl ohne Argumente aus, aber leiten Sie PHP-Code hinein:
    echo '<?php echo "Hello world!";' | php
  2. Dateiname als Argument Führen Sie den Befehl php mit dem Namen einer PHP-Quelldatei als erstes Argument aus:
    php hello_world.php
  3. Code als Argument. Verwenden Sie die Option -r im Befehl php , 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!";'
  4. Interaktive Schale. Verwenden Sie die Option -a im Befehl php , 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)

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";
?>
 
PHP 5.x 5.4

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:

PHP 5.x 5.6

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.