PHP 8.0 shipped in November 2020 and it’s the most feature-rich release since PHP 7.0 transformed performance five years ago. PHP 8.0 brings ergonomic language features that dramatically reduce boilerplate, plus the Just-In-Time compiler that opens the door to new performance-critical use cases.
Named Arguments
Pass arguments by parameter name rather than position — especially useful for functions with many optional parameters:
// Before
array_slice($array, 0, 3, true);
// PHP 8 — crystal-clear intent
array_slice(array: $array, offset: 0, length: 3, preserve_keys: true);
Union Types
A parameter or return value can now be declared as one of multiple types:
function processInput(int|string $input): int|float {
return is_string($input) ? strlen($input) : $input * 1.5;
}
The Match Expression
A strict-comparison alternative to switch that returns a value and requires exhaustive handling:
$status = 2;
$label = match($status) {
1 => 'Active',
2, 3 => 'Pending',
4 => 'Suspended',
default => 'Unknown',
};
// $label = 'Pending'
Nullsafe Operator
Chain method calls on potentially-null objects without nested null checks:
// Before
$city = $user ? ($user->getAddress() ? $user->getAddress()->getCity() : null) : null;
// PHP 8
$city = $user?->getAddress()?->getCity();
Constructor Property Promotion
Eliminate the constructor boilerplate that previously required declaring, listing, and assigning every property:
// PHP 8 — one line per property
class User {
public function __construct(
private readonly int $id,
private string $name,
private ?string $email = null,
) {}
}
Attributes (Annotations)
PHP 8 introduces native attributes — structured metadata attached to classes, methods, and properties, readable via Reflection without parsing docblock strings:
#[Route('/users', methods: ['GET'])]
public function listUsers(): Response { ... }
The JIT Compiler
PHP 8’s JIT compiles hot code paths to native machine instructions at runtime. For long-running processes, mathematical computations, and image processing, JIT yields 2-3x speedups. For typical web request/response cycles (WordPress, Laravel), gains are modest — but CPU-bound tasks benefit enormously.
PHP 8.0 is a genuinely exciting release. If you are running PHP 7.x, upgrade to 8.0 on a staging environment and run your test suite — the migration path is well-documented and the payoff in code quality is immediate.