What lives here

One page per major release, kept short on purpose: the single most important change first, then the rest in a few lines. Deep dives live on their own pages:

  1. PHP 5: the release that made PHP object-oriented — Zend Engine 2, exceptions, PDO.
  2. PHP 7: twice as fast, with scalar types — PHPNG speed, scalar and return types, catchable engine errors.
  3. PHP 8: JIT, attributes, match and named arguments — the overview; details in what is new in PHP 8.0 and what is new in PHP 8.5.

Thirty seconds of history

1995, PHP/FI — Rasmus Lerdorf's Personal Home Page tools: C binaries, then a Perl layer, for hit counters and guestbooks.

1998, PHP 3 — Andi Gutmans and Zeev Suraski rewrite the core; the Zend Engine ancestor makes PHP extensible, and the language takes off.

2000, PHP 4 — the Zend Engine proper: sessions, output buffering, superglobals ($_GET, $_POST), and a CLI binary. Objects exist but are copies, not references.

2004, PHP 5 — Zend Engine 2: real OOP (visibility, interfaces, abstract classes), exceptions, PDO, SimpleXML. Later 5.x adds namespaces and closures (5.3) and traits (5.4).

PHP 6 — skipped: the Unicode-native attempt failed and was abandoned; its non-Unicode parts shipped as PHP 5.3 and 5.4 instead.

2015, PHP 7 — the PHPNG engine roughly doubles speed; scalar and return type declarations, ?? and <=>, and engine errors become catchable Error throwables.

2020, PHP 8 — JIT, named arguments, attributes, match, union types, constructor promotion, nullsafe operator. The 8.x line continues in the detailed articles above.