# Geschichte von PHP: Von der Entstehung bis zur aktuellen Version 8.3

- Canonical: https://asgru.com/de/geschichte-von-php-von-der-entstehung-bis-zur-aktuellen-version-8-3/
- Language: de
- Author: asgru
- Published: 2024-09-05T04:57:47+02:00
- Updated: 2026-09-15T14:13:33+02:00

PHP ist eine der beliebtesten Programmiersprachen für die Webentwicklung. Seit seiner Entstehung im Jahr 1994 hat es einen langen Weg zurückgelegt und sich von einem einfachen Werkzeug für dynamische Webseiten zu einer leistungsstarken, performanten und vielseitigen Programmiersprache entwickelt. Sehen wir uns die wichtigsten Etappen seiner Entwicklung an und besprechen wir die zentralen Änderungen in den Versionen 8.0, 8.1, 8.2 und 8.3 im Detail.

### Entwicklungsphasen von PHP

#### 1995: Die Geburt von PHP/FI 1.0

PHP wurde 1994 vom dänischen Programmierer Rasmus Lerdorf als Sammlung von Perl-Skripten entwickelt, um die Besuche seiner Online-Bewerbung nachzuverfolgen. 1995 veröffentlichte er die erste Version von PHP/FI (Personal Home Page/Forms Interpreter), die HTML-Formulare und die Interaktion mit Datenbanken unterstützte.

#### 1998: PHP 3.0 und die Revolution der Sprache

Mithilfe von Zeev Suraski und Andi Gutmans wurde PHP vollständig neu geschrieben, was 1998 zur Veröffentlichung von PHP 3.0 führte. Darin erschien die neue Zend Engine, die die Performance und Flexibilität der Sprache deutlich steigerte. PHP 3 war die erste weitverbreitete Variante der Sprache, die objektorientierte Programmierung unterstützte.

#### 2000: PHP 4.0 und das Erscheinen der Zend Engine

PHP 4 mit Zend Engine 1.0 erschien im Jahr 2000 und bot eine verbesserte Performance sowie Sitzungsunterstützung, wodurch PHP besser für die Entwicklung komplexer dynamischer Webanwendungen geeignet war.

#### 2004: PHP 5.0 und eine neue Ära der OOP

PHP 5, das 2004 veröffentlicht wurde, führte vollständige Unterstützung für objektorientierte Programmierung, eine verbesserte Datenbankinteraktion über PDO (PHP Data Objects) und ein neues Modell zur Ausnahmebehandlung ein.

#### 2015: PHP 7.0 und eine deutliche Leistungssteigerung

2015 brachte PHP 7.0 mit der neuen Generation Zend Engine 3.0 eine Verdopplung der Code-Ausführungsgeschwindigkeit sowie Unterstützung für die Typisierung von Funktionsargumenten und Rückgabewerten.

### PHP 8: Die wichtigsten Neuerungen

PHP 8.0, das im November 2020 veröffentlicht wurde, war dank zahlreicher neuer Funktionen und Verbesserungen ein wichtiger Schritt nach vorn, die die Sprache komfortabler, performanter und ausdrucksstärker machten. Zu den wichtigsten Neuerungen gehören:

#### 1. JIT-Kompilierung (Just-in-time)

Der JIT-Compiler ermöglicht die dynamische Kompilierung eines Teils des Bytecodes in Maschinencode während der Ausführung. Das ist besonders nützlich für rechenintensive Aufgaben wie wissenschaftliche Berechnungen oder maschinelles Lernen. Auf gewöhnliche Webanwendungen hat JIT jedoch weniger Einfluss.

Beispiel:

<?php
function fibonacci($n) {
 if ($n == 0) return 0;
 if ($n == 1) return 1;
 return fibonacci($n-1) + fibonacci($n-2);
}

echo fibonacci(30);
?>

#### 2. Match Expression (Musterabgleich)

match ist eine verbesserte Version der Anweisung switch, die strenge Typisierung verwendet, keine break-Anweisungen benötigt und ein Ergebnis direkt zurückgeben kann.

Beispiel für die Verwendung von match:

<?php
$status = 404;

$message = match ($status) {
 200 => 'OK',
 404 => 'Not Found',
 500 => 'Internal Server Error',
 default => 'Unknown Status',
};

echo $message; // Выведет: Not Found
?>

#### 3. Benannte Argumente

Benannte Argumente ermöglichen die Übergabe von Funktionsparametern anhand ihres Namens, wodurch Funktionsaufrufe verständlicher und komfortabler werden.

Beispiel:

<?php
function greet(string $name, string $greeting = 'Hello') {
 echo "$greeting, $name!";
}

greet(name: 'John', greeting: 'Welcome'); // Выведет: Welcome, John!
?>

#### 4. Union Types (Vereinigungstypen)

Vereinigungstypen ermöglichen die Angabe mehrerer Typen für Argumente und Rückgabewerte.

Beispiel:

<?php
function processInput(int|string $input) {
 if (is_int($input)) {
 return $input * 2;
 } else {
 return strtoupper($input);
 }
}

echo processInput(10); // Выведет: 20
echo processInput('hello'); // Выведет: HELLO
?>

#### 5. Constructor Property Promotion

Diese Neuerung ermöglicht es, Objekteigenschaften automatisch aus Konstruktorargumenten zuzuweisen, wodurch weniger Code erforderlich ist.

Beispiel:

<?php
class Point {
 public function __construct(
 public int $x,
 public int $y
 ) {}
}

$point = new Point(3, 5);
echo $point->x; // Выведет: 3
?>

#### 6. Fehler bei ungültigen Verweisen

PHP 8 erzeugt Fehler beim Zugriff auf nicht vorhandene Array-Schlüssel oder Objekteigenschaften, was die Zuverlässigkeit des Codes erhöht.

Beispiel:

<?php
$data = [];
echo $data['key']; // Fatal Error: Uncaught Error: Undefined array key "key"
?>

### PHP 8.1: Wichtige Neuerungen

PHP 8.1, das im November 2021 veröffentlicht wurde, fügte zahlreiche wichtige Funktionen und Verbesserungen hinzu, darunter Aufzählungen, Fibers und readonly-Eigenschaften.

#### 1. Enums (Aufzählungen)

Aufzählungen (enum) ermöglichen die Definition einer festen Menge von Werten, die im Code verwendet werden.

Beispiel:

<?php
enum Status {
 case Pending;
 case Completed;
 case Failed;
}

function handleStatus(Status $status) {
 return match ($status) {
 Status::Pending => 'Pending',
 Status::Completed => 'Completed',
 Status::Failed => 'Failed',
 };
}

echo handleStatus(Status::Pending); // Выведет: Pending
?>

#### 2. Fibers

Fibers ermöglichen die Erstellung kooperativer Threads in PHP und vereinfachen damit die asynchrone Programmierung.

Beispiel:

<?php
$fiber = new Fiber(function() {
 $value = Fiber::suspend('fiber suspended');
 echo "Resumed: $value\n";
});

echo $fiber->start(); // Выведет: fiber suspended
$fiber->resume('resume value'); // Выведет: Resumed: resume value
?>

#### 3. Readonly Properties

readonly-Eigenschaften können nur bei der Erstellung eines Objekts initialisiert werden und sind danach unveränderlich.

Beispiel:

<?php
class User {
 public readonly string $name;

 public function __construct(string $name) {
 $this->name = $name;
 }
}

$user = new User('Alice');
// $user->name = 'Bob'; // Ошибка, так как свойство readonly
?>

### PHP 8.2: Fortsetzung der Verbesserungen

PHP 8.2, das im Dezember 2022 veröffentlicht wurde, brachte weitere Syntaxverbesserungen und neue Möglichkeiten.

#### 1. Readonly-Klassen

PHP 8.2 ermöglicht es, Klassen als readonly zu deklarieren, wodurch alle ihre Eigenschaften automatisch unveränderlich werden.

Beispiel:

<?php
readonly class Product {
 public function __construct(
 public string $name,
 public float $price
 ) {}
}

$product = new Product('Laptop', 1200.00);
// $product->price = 1300.00; // Ошибка, так как класс readonly
?>

#### 2. Deprecation dynamischer Eigenschaften

Dynamische Eigenschaften, die außerhalb der Klassendeklaration erstellt werden, sind nun als veraltet markiert, was hilft, Fehler zu vermeiden.

Beispiel:

<?php
class User {}

$user = new User();
$user->name = 'John'; // Deprecated: dynamic properties are deprecated
?>

#### 3. Unterstützung von null, false und true in Vereinigungstypen

Nun können null, false und true als Typen in Vereinigungstypen angegeben werden.

Beispiel:

<?php
function test(null|false|string $value): string {
 return $value === null ? 'null' : ($value === false ? 'false' : $value);
}

echo test(null); // Выведет: null
echo test(false); // Выведет: false
echo test('test'); // Выведет: test
?>

### PHP 8.3: Die neuesten Verbesserungen

PHP 8.3, das im November 2023 veröffentlicht wurde, führte die Weiterentwicklung der Sprache fort – mit Fokus auf mehr Sicherheit und neue nützliche Funktionen.

#### 1. json_validate

Die neue Funktion json_validate wurde hinzugefügt. Sie ermöglicht die Prüfung, ob ein JSON-String gültig ist, ohne ihn zu dekodieren.

Beispiel:

<?php
$json = '{"name": "John", "age": 30}';
$is_valid = json_validate($json);
echo $is_valid ? 'Valid JSON' : 'Invalid JSON';
?>

#### 2. Typed Class Constants

Nun können Typen für Konstanten innerhalb von Klassen deklariert werden, was die Typisierung stärkt.

Beispiel:

<?php
class Config {
 public const string NAME = 'Application';
}

echo Config::NAME; // Выведет: Application
?>

### Fazit

PHP 8.0 und spätere Versionen brachten zahlreiche Verbesserungen, die die Performance und Ausdrucksstärke der Sprache deutlich erhöht haben. Von der JIT-Kompilierung und Neuerungen wie match, Vereinigungstypen und Fibers bis zu den neuesten Verbesserungen in PHP 8.3 entwickelt sich die Sprache kontinuierlich weiter und passt sich den Anforderungen moderner Webanwendungen an. Damit bleibt sie ein zentrales Werkzeug für Millionen von Entwicklern weltweit.

Für alle meine Abonnenten habe ich großartige Neuigkeiten! 🎉 Beim Kauf von JetBrains-Produkten können Sie den speziellen Promo-Code „Asgru24“ verwenden und erhalten 25% Rabatt auf jedes Produkt! Verpassen Sie nicht die Gelegenheit, bei den besten Entwicklungstools zu sparen.
