# Historia PHP: od powstania do aktualnej wersji 8.3

- Canonical: https://asgru.com/pl/historia-php-od-powstania-do-aktualnej-wersji-8-3/
- Language: pl
- Author: asgru
- Published: 2024-09-05T04:57:47+02:00
- Updated: 2026-09-15T13:09:17+02:00

PHP to jeden z najpopularniejszych języków programowania do tworzenia aplikacji internetowych. Od momentu powstania w 1994 roku przeszedł długą drogę, ewoluując z prostego narzędzia do tworzenia dynamicznych stron internetowych w wydajny i wszechstronny język programowania. Przyjrzyjmy się głównym etapom jego rozwoju i szczegółowo omówmy kluczowe zmiany w wersjach 8.0, 8.1, 8.2 i 8.3.

### Etapy rozwoju PHP

#### 1995: Narodziny PHP/FI 1.0

PHP zostało stworzone przez duńskiego programistę Rasmusa Lerdorfa w 1994 roku jako zestaw skryptów Perl do śledzenia odwiedzin jego CV na stronie internetowej. W 1995 roku wydał pierwszą wersję PHP/FI (Personal Home Page/Forms Interpreter), obsługującą formularze HTML i interakcję z bazami danych.

#### 1998: PHP 3.0 i rewolucja w języku

Przy pomocy Zeva Suraskiego i Andy’ego Gutmansa PHP zostało całkowicie przepisane, co doprowadziło do wydania wersji PHP 3.0 w 1998 roku. Wprowadzono w niej nowy silnik Zend Engine, który znacząco zwiększył wydajność i elastyczność języka. PHP 3 było pierwszą szeroko stosowaną wersją języka obsługującą programowanie obiektowe.

#### 2000: PHP 4.0 i pojawienie się Zend Engine

PHP 4 z Zend Engine 1.0 pojawiło się w 2000 roku, oferując lepszą wydajność i obsługę sesji, co uczyniło PHP bardziej odpowiednim do tworzenia złożonych dynamicznych aplikacji internetowych.

#### 2004: PHP 5.0 i nowa era OOP

PHP 5, wydane w 2004 roku, wprowadziło pełną obsługę programowania obiektowego, ulepszoną interakcję z bazami danych za pośrednictwem PDO (PHP Data Objects) oraz nowy model obsługi wyjątków.

#### 2015: PHP 7.0 i znacząca poprawa wydajności

W 2015 roku PHP 7.0 zaoferowało nową generację Zend Engine 3.0, co zapewniło dwukrotny wzrost szybkości wykonywania kodu oraz dodało obsługę typowania argumentów funkcji i wartości zwracanych.

### PHP 8: Główne nowości

PHP 8.0, wydane w listopadzie 2020 roku, było ważnym krokiem naprzód dzięki licznym nowym funkcjom i ulepszeniom, które uczyniły język wygodniejszym, wydajniejszym i bardziej ekspresyjnym. Główne nowości obejmują:

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

Kompilator JIT umożliwia dynamiczną kompilację części kodu bajtowego do kodu maszynowego podczas wykonywania. Jest to szczególnie przydatne w zadaniach intensywnie wykorzystujących obliczenia, takich jak obliczenia naukowe czy uczenie maszynowe. Jednak w przypadku zwykłych aplikacji internetowych JIT ma mniejszy wpływ.

Przykład:

<?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 (Dopasowanie wzorca)

match to ulepszona wersja instrukcji switch, która stosuje ścisłe typowanie, nie wymaga instrukcji break i może bezpośrednio zwracać wynik.

Przykład użycia match:

<?php
$status = 404;

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

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

#### 3. Argumenty nazwane

Argumenty nazwane umożliwiają przekazywanie parametrów funkcji według nazwy, dzięki czemu wywołania funkcji są bardziej przejrzyste i wygodne.

Przykład:

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

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

#### 4. Union Types (Typy unii)

Typy unii umożliwiają określanie kilku typów dla argumentów i wartości zwracanych.

Przykład:

<?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

Ta nowość umożliwia automatyczne przypisywanie właściwości obiektu z argumentów konstruktora, co skraca kod.

Przykład:

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

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

#### 6. Błędy dla nieprawidłowych odwołań

PHP 8 generuje błędy przy dostępie do nieistniejących kluczy tablic lub właściwości obiektów, co zwiększa niezawodność kodu.

Przykład:

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

### PHP 8.1: Ważne nowości

PHP 8.1, wydane w listopadzie 2021 roku, dodało wiele ważnych funkcji i ulepszeń, takich jak wyliczenia, fibery i właściwości readonly.

#### 1. Enums (Wyliczenia)

Wyliczenia (enum) umożliwiają definiowanie stałego zestawu wartości używanych w kodzie.

Przykład:

<?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. Fibery (Fibers)

Fibery dodają możliwość tworzenia współdzielonych wątków w PHP, co upraszcza programowanie asynchroniczne.

Przykład:

<?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

Właściwości readonly można zainicjalizować tylko podczas tworzenia obiektu, po czym stają się niezmienne.

Przykład:

<?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: Dalsze ulepszenia

PHP 8.2, wydane w grudniu 2022 roku, przyniosło dodatkowe ulepszenia składni i nowe możliwości.

#### 1. Klasy readonly

PHP 8.2 umożliwia deklarowanie klas jako readonly, co automatycznie czyni wszystkie ich właściwości niezmiennymi.

Przykład:

<?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. Wycofanie właściwości dynamicznych

Właściwości dynamiczne, tworzone poza deklaracją klasy, są teraz oznaczane jako przestarzałe, co pomaga unikać błędów.

Przykład:

<?php
class User {}

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

#### 3. Obsługa null, false i true w typach unii

Można teraz określać null, false i true jako typy w typach unii.

Przykład:

<?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: Najnowsze ulepszenia

PHP 8.3, wydane w listopadzie 2023 roku, kontynuowało rozwój języka, koncentrując się na zwiększeniu bezpieczeństwa i dodaniu nowych przydatnych funkcji.

#### 1. json_validate

Dodano nową funkcję json_validate, która umożliwia sprawdzanie poprawności ciągu JSON bez jego dekodowania.

Przykład:

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

#### 2. Typed Class Constants

Można teraz deklarować typy dla stałych wewnątrz klas, co wzmacnia typowanie.

Przykład:

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

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

### Podsumowanie

PHP 8.0 i późniejsze wersje przyniosły wiele ulepszeń, które znacząco zwiększyły wydajność i ekspresyjność języka. Począwszy od kompilacji JIT i nowości takich jak match, typy unii i fibery, aż po najnowsze ulepszenia w PHP 8.3, język nadal się rozwija i dostosowuje do wymagań nowoczesnych aplikacji internetowych, pozostając kluczowym narzędziem dla milionów programistów na całym świecie.

Dla wszystkich moich subskrybentów mam świetną wiadomość! 🎉 Przy opłacaniu produktów JetBrains możesz użyć specjalnego kodu promocyjnego „Asgru24” i otrzymać rabat 25% na dowolny produkt! Nie przegap okazji, by zaoszczędzić na najlepszych narzędziach do tworzenia oprogramowania.
