Jeśli kiedykolwiek pracowałeś z PHP – czy to przy WordPressie, czy przy własnych projektach – to pewnie zauważyłeś, że ten język przeszedł ogromną metamorfozę. Od prostego narzędzia do generowania dynamicznych stron w latach 90., aż po nowoczesny, szybki i obiektowy język, który dziś napędza sporą część internetu.
Wbrew temu, co czasem mówią żarty programistów, PHP nie tylko żyje, ale ma się świetnie. I to właśnie dzięki temu, jak bardzo zmieniało się z wersji na wersję.
W tym artykule przejdziemy przez wszystkie kluczowe wydania PHP – od 3.0 aż po 8.3 – i zobaczymy, co tak naprawdę wniosły. Nie będzie suchej listy zmian, tylko opowieść o tym, jak PHP dojrzewało, jakie błędy popełniało i jak z nich wychodziło.
PHP 3 – Początek prawdziwego języka (1998)
PHP 3 to moment, w którym PHP przestało być prostym zbiorem narzędzi CGI, a zaczęło przypominać język programowania. To tutaj narodziła się składnia, którą znamy do dziś – $zmienna, echo, funkcje, tablice, podstawy logiki.
Najważniejsze zmiany:
- pojawił się parser Zend (jeszcze w wersji 0.x),
- dodano obsługę modułów (rozszerzeń),
- wprowadzono bardziej spójny system funkcji.
W praktyce oznaczało to, że PHP zaczęło być używalne do czegoś więcej niż prostych stron. To był fundament pod wszystko, co przyszło później.
PHP 4 – Era Zend Engine 1.0 (2000)
PHP 4 to ogromny krok naprzód. Najważniejsza rzecz? Zend Engine 1.0, czyli silnik, który wykonywał kod dużo szybciej i stabilniej.
Co się zmieniło?
- pojawiła się obsługa sesji,
- dodano buforowanie wyjścia,
- wprowadzono lepszą obsługę HTTP,
- rozszerzenia stały się bardziej modularne,
- poprawiono wydajność o rząd wielkości.
PHP 4 było szybkie, ale miało jedną dużą wadę: obiekty były przekazywane przez wartość, co czyniło programowanie obiektowe mało praktycznym. To miało się zmienić dopiero w PHP 5.
PHP 5 – Rewolucja obiektowa (2004)
To była prawdziwa rewolucja. PHP 5 wprowadziło Zend Engine 2, a wraz z nim:
- prawdziwe OOP (klasy, interfejsy, dziedziczenie, wyjątki),
- modyfikatory dostępu (
public,private,protected), - destruktory i konstruktory,
- obsługę PDO,
- SimpleXML,
- Reflection API.
To właśnie dzięki PHP 5 powstały frameworki takie jak Symfony, Laravel czy Zend Framework. Bez tej wersji PHP nigdy nie stałby się językiem do dużych projektów.
PHP 5.3 – Nowoczesność wkracza do gry (2009)
PHP 5.3 to jedna z najważniejszych wersji w historii. To tutaj pojawiły się:
- namespaces (przestrzenie nazw),
- closures (funkcje anonimowe),
- late static binding,
- nowy system ładowania klas (SPL),
- początek wsparcia dla programowania funkcyjnego.
Namespaces zmieniły wszystko. Nagle można było pisać duże aplikacje bez konfliktów nazw. To był moment, w którym PHP zaczął przypominać nowoczesne języki.
PHP 5.4 – Krótsza składnia, lepsza wydajność (2012)
W PHP 5.4 pojawiło się kilka rzeczy, które dziś wydają się oczywiste:
- krótsza składnia tablic:
[]zamiastarray(), - wbudowany serwer developerski,
- trait’y,
- usunięcie magic quotes.
Traits były odpowiedzią na brak wielokrotnego dziedziczenia. Dzięki nim można było komponować klasy z mniejszych elementów.
PHP 5.5 – Generatory i finally (2013)
To była wersja, która wprowadziła:
- generatory (
yield), finallyw obsłudze wyjątków,- password_hash() i przyjaciół.
Generatory były game‑changerem. Pozwalały tworzyć ogromne iteratory bez zużywania pamięci.
Przykład generatora:
function liczDo($n) {
for ($i = 1; $i <= $n; $i++) {
yield $i;
}
}
foreach (liczDo(1000000) as $liczba) {
echo $liczba;
}
PHP 5.6 – Ostatni przystanek przed PHP 7 (2014)
W PHP 5.6 pojawiły się:
- argumenty wariadyczne (
...$args), - operator rozpakowania tablic (
...$array), - stałe skalary.
To była wersja, która przygotowała grunt pod wielką zmianę – PHP 7.
PHP 7.0 – Największy skok wydajności w historii (2015)
PHP 7 to absolutny przełom. Wydajność wzrosła dwukrotnie, a zużycie pamięci spadło o połowę. Wszystko dzięki Zend Engine 3.
Co wprowadzono?
- scalar type hints,
- return type declarations,
- null coalescing operator (
??), - spaceship operator (
<=>), - fatal errors → exceptions,
- ogromne optymalizacje JIT‑owe (wewnętrzne).
To była wersja, która sprawiła, że PHP wróciło do gry. Nagle okazało się, że PHP może być szybkie jak Node.js czy Python.
PHP 7.1 – Nullable types i iterables (2016)
W tej wersji pojawiły się:
- typy nullable (
?string), void,iterable,- stałe klasowe typu
visibility.
To była wersja, która dopracowała system typów.
PHP 7.2 – Typ object i lepsze bezpieczeństwo (2017)
Najważniejsze zmiany:
- typ
object, - szyfrowanie libsodium w rdzeniu,
- dalsze optymalizacje.
PHP 7.3 – Nowe funkcje i lepsza wydajność (2018)
Wprowadzono:
- trailing commas w wywołaniach funkcji,
- poprawę garbage collectora,
- szybsze operacje na tablicach.
PHP 7.4 – Preloading i arrow functions (2019)
To była ostatnia wersja przed PHP 8 i jedna z najważniejszych w historii.
Najważniejsze zmiany:
- preloading (ładowanie kodu do pamięci przy starcie serwera),
- arrow functions (
fn($x) => $x * 2), - typy właściwości klas,
- FFI (Foreign Function Interface).
Arrow functions były ogromnym ułatwieniem – kod stał się krótszy i bardziej czytelny.
PHP 8.0 – JIT i nowa era (2020)
PHP 8.0 to kolejna rewolucja. Najważniejsze zmiany:
- JIT (Just‑In‑Time Compiler),
- union types,
- match expression,
- constructor property promotion,
- attributes (adnotacje),
- nowy system błędów.
Przykład match:
$wynik = match($status) {
200 => 'OK',
404 => 'Nie znaleziono',
500 => 'Błąd serwera',
default => 'Nieznany status'
};
PHP 8.1 – Fibers i enumy (2021)
To była wersja, która wprowadziła:
- enumy,
- fibers (podstawa dla asynchroniczności),
- readonly properties,
- intersection types.
Enumy były długo wyczekiwane:
enum Status {
case OK;
case ERROR;
}
PHP 8.2 – readonly classes i nowe typy (2022)
Najważniejsze zmiany:
- readonly classes,
- disjunctive normal form types,
- usunięcie dynamicznych właściwości (z wyjątkami).
PHP 8.3 – Usprawnienia typów i wydajności (2023)
W PHP 8.3 pojawiły się:
- typed class constants,
- ulepszenia w
json_validate, - poprawa wydajności JIT,
- nowe funkcje do pracy z datami i stringami.
To wersja, która dopracowuje to, co wprowadzono wcześniej.
Podsumowanie – jak PHP zmieniało się przez lata?
Jeśli spojrzymy na całą historię PHP, to widać wyraźnie trzy etapy:
1. PHP jako prosty język do stron (PHP 3-4)
Wtedy chodziło o to, żeby szybko generować HTML.
2. PHP jako język aplikacji (PHP 5)
Pojawiło się OOP, frameworki, MVC, duże projekty.
3. PHP jako nowoczesny, szybki i typowany język (PHP 7-8)
Wydajność, typy, JIT, asynchroniczność, enumy, attributes.
Dziś PHP jest dojrzałym językiem, który nie ma się czego wstydzić. Wiele osób nie zdaje sobie sprawy, jak bardzo się zmienił – i jak bardzo różni się od tego, czym był 15 lat temu.
Bonus: prosty przykład kodu pokazujący różnice między PHP 5 a PHP 8
PHP 5 – klasa z ręcznym przypisywaniem
class User {
private $name;
private $email;
public function __construct($name, $email) {
$this->name = $name;
$this->email = $email;
}
}
PHP 8 – constructor property promotion
class User {
public function __construct(
private string $name,
private string $email
) {}
}
Różnica? Kod jest krótszy, czytelniejszy i typowany.
PHP przeszło długą drogę – od prostego narzędzia CGI do nowoczesnego języka z JIT‑em, typami, enumami i ogromną wydajnością. Każda wersja wnosiła coś ważnego, a cała ewolucja pokazuje, że PHP nie tylko nadąża za trendami, ale często je wyprzedza.