Jakie znaczące zmiany przyniosła każda wersja PHP?

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: [] zamiast array(),
  • 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),
  • finally w 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.

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl