📖 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