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