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
Rasmus Lerdorf
Rasmus Lerdorf

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 localhost gebunden
  • 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!

Copyright © 2025 Thomas Smits