Få ny viden om PHP versionerne 8.3 til 8.5. Vi har samlet et overblik til dig så du kan se hvilke hovedtræk der er gennem de sidste 3 versioner og hvad du skal kigge på i forhold til om din løsning kan håndterer disse versioner. Du kan altid se dokumentationen for PHP versioner på https://www.php.net/ChangeLog-8.php. Husk at opdatere din hjemmeside inden en eventuel ændring i PHP version.

PHP 8.3

PHP 8.3 blev udgivet den 23. november 2023 og er en solid opdatering med fokus på typesikkerhed og nye praktiske funktioner.

De vigtigste ændringer:

  1. Typede klassekonstanter: Du kan nu angive typer for konstanter i klasser, interfaces og traits. Dette sikrer typekonsistens når underklasser arver fra basisklasser og forhindrer utilsigtede typeændringer.
  2. Dybdekloning af readonly-egenskaber: Readonly-egenskaber kan nu geninitialiseres inden for __clone() metoden, hvilket muliggør dybdekloning – en efterspurgt forbedring blandt udviklere.
  3. json_validate() funktion: En ny funktion der validerer om en streng er gyldig JSON uden at bruge json_decode(). Dette er mere effektivt og bruger mindre hukommelse.
  4. #[\Override] attribut: En ny attribut der verificerer, at en metode faktisk overskriver en forældre-metode. Dette beskytter mod tastefejl og problemer ved refaktorering.
  5. Dynamisk adgang til klassekonstanter: Du kan nu tilgå klassekonstanter og enum-medlemmer med variable navne direkte via MyClass::{$konstantNavn}.
  6. Detektering af stakoverløb: Nye INI-indstillinger gør det muligt at opdage stakoverløb og kaste en fejl i stedet for at crashe, hvilket gør fejlfinding langt nemmere.
  7. Forbedret Randomizer-klasse: Nye metoder som getBytesFromString(), nextFloat() og getFloat() til bedre tilfældighedsgenerering.
  8. Bedre dato/tid-undtagelser: Mere præcise og dedikerede undtagelser for dato- og tidsoperationer.

PHP 8.4

PHP 8.4 blev udgivet den 21. november 2024 og er den hidtil mest funktionsrige opdatering i PHP 8.x-serien.

De vigtigste ændringer:

  1. Property hooks: En af de mest markante ændringer i moderne PHP. Du kan nu definere get- og set-logik direkte på egenskaber, hvilket eliminerer behovet for omfattende kode med getters og setters.
  2. Asymmetrisk synlighed: Du kan nu definere forskellige synlighedsniveauer for læsning og skrivning af en egenskab. For eksempel kan en egenskab være offentligt læsbar, men kun modificerbar internt i klassen.
  3. HTML5 DOM-understøttelse: DOM-parseren understøtter nu fuldt ud HTML5 via nye DOM-klasser. Dette er en kæmpe forbedring for alle der arbejder med HTML-parsing.
  4. Nye array-funktioner: Praktiske funktioner som array_find(), array_find_key(), array_any() og array_all() gør det nemmere at søge og validere arrays.
  5. Metodekæder uden parenteser: Du behøver ikke længere parenteser når du instantierer objekter og kalder metoder. (new MinKlasse())->metode() kan nu skrives som new MinKlasse()->metode().
  6. Dovne objekter (Lazy Objects): Native understøttelse af dovne objekter, et mønster der bruges af frameworks til at bygge proxy-objekter.
  7. #[\Deprecated] attribut: En ny indbygget attribut til at markere funktioner, metoder og klasser som forældede.
  8. Forbedret BCrypt-sikkerhed: Standard-omkostningen for bcrypt er øget til 12, hvilket styrker adgangskodehashing mod brute-force angreb.
  9. Nye BCMath-funktioner: bcfloor(), bcceil(), bcround() og bcdivmod() samt objektorienteret API med BcMath\Number klassen.
  10. PDO underklasser: Driver-specifikke PDO-underklasser som Pdo\MySql, Pdo\Pgsql og Pdo\Sqlite for bedre typesikkerhed.

PHP 8.5 (kommer november 2025)

PHP 8.5 er under udvikling og forventes udgivet i november 2025. Her er et smugkig på hvad der er på vej.

De vigtigste ændringer:

  1. Pipe-operatoren (|>): En ny operator der gør det muligt at kæde funktionskald sammen på en mere læsbar måde. I stedet for indlejrede funktionskald kan du nu skrive data fra venstre mod højre.
  2. #[\NoDiscard] attribut: Angiver at en funktions returværdi er vigtig og bør bruges. Dette hjælper med at fange fejl hvor returværdier ignoreres ved et uheld.
  3. Lukninger i konstante udtryk: Du kan nu bruge closures og førsteklasses callables i konstante udtryk, hvilket giver større fleksibilitet.
  4. Klon med ændringer: clone() funktionen understøtter nu at ændre egenskaber under kloning.
  5. URL-parsing efter RFC 3986 og WHATWG: Nye API’er til URL-parsing og manipulation der følger moderne standarder.
  6. Ny URI-udvidelse: En helt ny udvidelse til at arbejde med URI’er på en standardiseret måde.
  7. Nye array-funktioner: array_first() og array_last() til nemt at hente første og sidste element i et array.
  8. HEIF/HEIC billedunderstøttelse: getimagesize() understøtter nu HEIF- og HEIC-billedformater.
  9. SVG-understøttelse: getimagesize() og relaterede funktioner understøtter nu SVG-billeder.
  10. Partitionerede cookies: Understøttelse af partitionerede cookies i både sessions og standard cookie-funktioner.
  11. Grafem-funktioner med lokalitet: Funktioner som grapheme_strpos() og grapheme_substr() får nu en $locale parameter.
  12. OPcache er nu obligatorisk: OPcache er ikke længere valgfrit og bygges altid med.

Forældede funktioner i PHP 8.5:

  • curl_close() og curl_share_close() er forældet
  • exit/die opfører sig nu mere som en funktion
  • Brug af null som array-indeks er forældet
  • $http_response_header variablen er forældet (brug http_get_last_response_headers() i stedet)
  • Backtick-operatoren som alias for shell_exec() er forældet

Supportperioder

  • PHP 8.3: Fejlrettelser til udgangen af 2025, sikkerhedsopdateringer til udgangen af 2027
  • PHP 8.4: Fejlrettelser til udgangen af 2026, sikkerhedsopdateringer til udgangen af 2028
  • PHP 8.5: Fejlrettelser til udgangen af 2027, sikkerhedsopdateringer til udgangen af 2029 (forventet)

Overordnet så vil disse PHP versioner forbedre både ydeevne, renere kode og øget sikkerhed.

De seneste PHP versioner: 8.3, 8.4 og 8.5
Om forfatteren
Michael

Michael Storm

Jeg er partner i nordicway ApS og har desuden over 10 års erfaring i online branchen som både designer og udvikler. Jeg er uddannet som multimediedesigner og har siden drevet flere selvstændige virksomheder. Med nordicway ApS ønsker jeg at tilbyde et kvalitetsprodukt til hjemmesideejere, og jeg vil bruge bloggen til at formidle brugbar viden til interesserede og potentielle kunder.