← Tilbage til versioner
PHP 8.1
Enums, readonly properties, fibers og performance forbedringer
Foto: Daniil Komov / Unsplash
Om PHP 8.1
PHP 8.1 introducerede nogle af de mest efterspurgte features i moderne PHP udvikling. Enums gav endelig native support for enumeration types, hvilket eliminerede behovet for konstant-klasser eller third-party libraries. Readonly properties gjorde value objects og DTOs meget mere sikre ved at garantere immutability. Fibers introducerede low-level primitives for asynkron programmering, hvilket gjorde det muligt for frameworks som Amphp og ReactPHP at implementere async/await patterns uden extensions. Intersection types udvidede type systemet til at kunne kræve multiple interface implementations samtidig.
Nye Features
- +Enumerations (Enums) - Native enum support med både unit cases og backed enums
- +Readonly Properties - Immutable properties der kun kan sættes én gang i constructor
- +First-class Callable Syntax - Elegant syntax til at oprette callables med (...)
- +Fibers - Low-level building blocks for asynkron programmering uden Promises
- +Intersection Types - Kræv at en value implementerer multiple interfaces samtidig
- +Never Return Type - Indiker at en funktion aldrig returner (altid thrower eller exit)
- +Final Class Constants - Prevent child classes fra at override class constants
- +New in initializers - Brug new i parameter default values, attribute arguments og static variables
- +Pure Intersection Types - Kombiner multiple interface requirements i type hints
- +Array unpacking med string keys - Unpack associative arrays med ...
- +Octal integer literal notation - Brug 0o123 syntax i stedet for 0123
Performance Forbedringer
- ↑JIT compiler forbedringer giver 10-15% bedre performance i visse workloads
- ↑Readonly properties eliminerer defensive copying overhead
- ↑Fibers har minimal overhead sammenlignet med threading eller process-based async
- ↑ARM64 (Apple Silicon) optimeret JIT compiler for Mac brugere
Breaking Changes
- !Passing null til non-nullable internal function parameters er deprecated
- !Tentative return types på internal methods - skal nu matche i child classes
- !Serializable interface er deprecated - brug __serialize() og __unserialize() i stedet
- !htmlspecialchars() default encoding ændret til UTF-8 på alle platforme
- !Restrictions on $GLOBALS usage - kan ikke længere modificere $GLOBALS med indirekte writes
Migration Tips
- →Refactor konstant-klasser til native enums for bedre type safety
- →Brug readonly properties i DTOs og value objects for immutability
- →Erstatt array-based enums med backed enums for database/API integration
- →Opdater Serializable implementationer til __serialize() og __unserialize()
- →Brug first-class callable syntax til at simplificere callback kode
- →Test Fibers-based libraries som Amp v3 for asynkron programmering
Upgrade Path
PHP 8.0
→PHP 8.1
→PHP 8.2
Quick Info
Release Date
25. November 2021
Status
Security fixes only
End of Life
25. November 2024