PHP 8.1
← 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