Einführung
Situation
- Bisher bekannte Technologien
- HTML unterstützt statische Seiten
- CSS unterstützt Layout
- JavaScript bietet mit DOM clientseitige Programmierung
Grundidee
Skriptsprachen speziell für dynamische Webseiten
- eingebettet in HTML-Seite
- besondere Fähigkeiten zur Web-Programmierung
- schnelle Anbindung an den Web-Server
- einfache Programmierung
- Beispiele
- Ruby-on-Rails
- PHP
- Python mit Django
- Active Server Pages (ASP.NET)
PHP
PHP: Hypertext Preprocessor (PHP)
- Integriere PHP-Code in HTML-Datei
- Web Server erkennt PHP-Seite und führt Code aus
- Ergebnis der Ausführung wird an den Client geschickt
Entworfen von Rasmus Lerdorf (*1968 in Grönland)
- Erste Version 1995 (PHP/FI 1.0)
- Aktuelle Version 8.1
Geschichte von PHP
- 1994: Rasmus Lerdorf beginnt mit einem ersten Hack
- 1995: PHP/FI 1.0
- 1995: PHP/FI 2.0 noch ohne echten Parser
- 1997: PHP 3.0
- echter Parser, Interpreter
- grundlegende OO Notation
- 2000: PHP 4.0
- Compiler/Interpreter wie Perl 5
- schnellerer Sprachkern basierend auf Zend-Engine
- viele, neue Funktionen (mehrere Tausend)
- keine echte Komposition/Assoziation von Objekten
- 2004: PHP 5.0
- diverse Optimierungen
- vollständige Objektorientierung
- Integration der Datenbank SQLite
- 2015: PHP 7
- Typdeklarationen für Parameter
- 2020: PHP 8
- JIT-Compiler
- Union-Typen
REPL
- PHP ist eine Sprache für das Web, nicht für lokale Skripte
- Wenn man kurz etwas ausprobieren möchte, kann man die REPL verwenden
- Start über
php -a
$ php -a
Interactive shell
php > $a = 3;
php > echo $a + 2;
5
Development-Server
- PHP liefert einen kleinen Webserver mit
- Wird aus Sicherheitsgründen üblicherweise an
localhostgebunden - Verwendet aktuelles Verzeichnis als Webroot
$ php -S "localhost:8080"
[Wed Jul 6 09:13:06 2022] PHP 8.1.2 Development Server (http://localhost:8080)
started
[Wed Jul 6 09:13:10 2022] 127.0.0.1:53262 Accepted
[Wed Jul 6 09:13:10 2022] 127.0.0.1:53262 [200]: GET /
[Wed Jul 6 09:13:10 2022] 127.0.0.1:53262 Closing
...
Der PHP-Webserver ist nicht für den Produktiveinsatz!