← Tilbage til versioner

PHP 8.0

PHP 8 introducerer JIT compilation, named arguments, union types og mange andre forbedringer

📖 Om PHP 8.0

PHP 8.0 var en historisk major release der markerede starten på en ny æra for PHP. JIT compiler introducerede Just-In-Time compilation som kan give op til 3x bedre performance i math-heavy og compute-intensive tasks. Named arguments og union types gjorde PHP's type system meget mere fleksibelt og udtryksstærkt. Match expressions erstattede mange use cases for switch statements med en mere sikker og elegant syntax. Constructor property promotion reducerede boilerplate kode markant i value objects og DTOs. Attributes gav PHP native metadata support, hvilket gjorde frameworks som Symfony og Doctrine meget mere performante.

🎯 Nye Features

  • JIT Compiler - Just-In-Time compilation giver op til 3x bedre performance i compute-intensive tasks
  • Named Arguments - Kald funktioner med parameter navne for bedre læsbarhed og fleksibilitet
  • Union Types - Tillad multiple typer i type declarations (int|string|null)
  • Match Expression - En mere kraftfuld og sikker alternativ til switch statements
  • Nullsafe Operator (?->) - Chain method calls uden at bekymre dig om null values
  • Constructor Property Promotion - Definer og assign properties direkte i constructor parametrene
  • Attributes (Annotations) - Native metadata support som erstatning for docblock annotations
  • WeakMap - Data structure for weak references i maps
  • Throw Expression - Throw exceptions i arrow functions og andre expressions
  • str_contains(), str_starts_with(), str_ends_with() - Native string helper functions

⚡ Performance Forbedringer

  • JIT compiler giver op til 3x bedre performance i compute-intensive workloads
  • Constructor property promotion reducerer runtime overhead
  • Match expressions er mere optimeret end switch statements
  • Optimeret string functions (str_contains, etc.) er hurtigere end polyfills

⚠️ Breaking Changes

  • !Strict type checking for arithmetic og bitwise operators - strenge skal være numeriske
  • !Flere warnings er nu blevet til TypeError exceptions
  • !Abstract trait methods skal nu respektere signaturer
  • !@-operator suppressor ikke længere stille fatal errors
  • !Fjernet curly brace syntax for array/string offset access helt
  • !create_function() er fjernet - brug anonymous functions i stedet

💡 Migration Tips

  • Brug rector/rector til automatisk upgrade af deprecated kode
  • Start med at aktivere strict_types=1 i nye filer for bedre type safety
  • Refactor switch statements til match expressions hvor det giver mening
  • Brug constructor property promotion i DTOs og value objects for mindre boilerplate
  • Erstat docblock annotations med native attributes i framework kode
  • Test JIT compiler i staging miljø før produktion (opcache.jit_buffer_size)

🔄 Upgrade Path

PHP 7.4
PHP 8.0
PHP 8.1

ℹ️ Quick Info

Release Date
26. November 2020
Status
End of Life
End of Life
26. November 2023