Fil-qosor: PHP 8.0 (Novembru 2020) ġabet argumenti msemmija, attributi, tipi union, match, l-operatur nullsafe u kompilatur JIT. Wara segwew kull sena: 8.1 b'enums u fibers, 8.2 b'klassijiet readonly, 8.3 b'kostanti tal-klassijiet bit-tipi, 8.4 b'property hooks u 8.5 b'operatur pipe u estensjoni URI. Kull verżjoni tiddeprekata wkoll affarijiet qodma. Fl-aġġornament għalhekk jgħoddu t-testijiet, u għas-sigurtà jgħodd fuq kollox li tħaddmu fergħa appoġġjata bl-aħħar stat tal-patches.
In-novitajiet ta' PHP 8 fil-qosor
It-tabella tiġbor il-punti ewlenin tal-paġni tar-rilaxx ta' php.net. Dati tal-ewwel pubblikazzjoni skont php.net.
| Verżjoni | Ħarġet | L-aktar novitajiet importanti | Għażla ta' deprekazzjonijiet u kisriet |
|---|---|---|---|
| 8.0 | 26/11/2020 | argumenti msemmija, attributi, Constructor Property Promotion, tipi union, match, ?->, JIT |
0 == 'foobar' issa huwa false, żbalji tat-tipi minflok twissijiet |
| 8.1 | 25/11/2021 | enums, proprjetajiet readonly, First-Class-Callables strlen(...), new fl-inizjalizzaturi, tipi intersection, never, fibers |
– |
| 8.2 | 08/12/2022 | klassijiet readonly, tipi DNF, null/false/true bħala tipi, estensjoni Random, kostanti fit-traits, #[\SensitiveParameter] |
proprjetajiet dinamiċi ddeprekati |
| 8.3 | 23/11/2023 | kostanti tal-klassijiet bit-tipi, #[\Override], json_validate(), mb_str_pad(), php -l għal diversi fajls |
– |
| 8.4 | 21/11/2024 | property hooks, viżibbiltà asimmetrika, #[\Deprecated], API DOM ġdida b'HTML5, BcMath\Number, array_find(), lazy objects |
parametri nullable impliċiti ddeprekati; IMAP, OCI8, PDO_OCI, pspell għal PECL |
| 8.5 | 20/11/2025 | operatur pipe, estensjoni URI, Clone With, #[\NoDiscard], array_first()/array_last() |
operatur backtick iddeprekat, disable_classes imneħħi |
PHP 8.0 u 8.1: il-pass il-kbir
PHP 8.0 għamlet il-lingwa b'mod sensibbli aktar stretta u aktar espressiva. Skont il-paġna tar-rilaxx, il-funzjonijiet interni issa jitfgħu b'mod konsistenti TypeError jew ValueError, minflok ma jagħtu biss twissijiet. It-tqabbil bejn numri u ktajjen ta' karattri isegwi regoli aktar nodfa.
<?php
// PHP 8.0: match jqabbel b'mod strett u ma jeħtieġx break
$status = 404;
echo match (true) {
$status >= 500 => 'Serverfehler',
$status >= 400 => 'Anfragefehler',
default => 'in Ordnung',
};
// PHP 8.0: operatur nullsafe
$land = $bestellung?->kunde?->adresse?->land;
PHP 8.1 ġabet enums, jiġifieri tipi ta' enumerazzjoni b'valuri fissi, u proprjetajiet readonly li jistgħu jiġu ssettjati darba biss:
<?php
enum Rolle: string {
case Leser = 'leser';
case Redakteur = 'redakteur';
case Admin = 'admin';
}
final class Benutzer {
public function __construct(
public readonly string $name,
public readonly Rolle $rolle,
) {}
}
$b = new Benutzer('Erika', Rolle::from('redakteur'));
Rolle::from() jitfa' żball għal valuri mhux magħrufa. Dan jipprevjeni li ktajjen arbitrarji ta' karattri minn formoli jgħaddu bħala rwol. Min minflok żball jeħtieġ valur vojt juża Rolle::tryFrom(), li jirritorna null għal valuri mhux magħrufa.
Ġodda wkoll f'8.1 huma l-fibers, bażi għal proċessi konkorrenti li fuqha jibnu libreriji għal ipproċessar asinkroniku. Fit-tħaddim normali ta' websajt wieħed jinduna ftit bihom, fi frameworks moderni u queues iżjed.
PHP 8.2 u 8.3: tindif u sigurtà
PHP 8.2 iddeprekat proprjetajiet dinamiċi. Min jassenja lil oġġett proprjetà mhux iddikjarata jirċievi avviż; b'#[\AllowDynamicProperties] dan jista' jitħalla għal klassijiet individwali. Plugins eqdem għalhekk spiss joħolqu ħafna messaġġi fil-log.
Interessanti għas-sigurtà huma l-estensjoni ġdida Random, li r-randomizer standard tagħha, skont il-paġna tar-rilaxx, juża ġeneratur kriptografikament sigur ta' numri każwali, u l-attribut #[\SensitiveParameter], li jaħbi valuri bħal passwords fl-stacktraces. Aktar dwar valuri każwali siguri taħt Numri każwali u tokens siguri f'PHP.
PHP 8.3 żiedet kostanti tal-klassijiet bit-tipi, l-attribut #[\Override] kontra żbalji tat-tajpjar meta jiġu sorpassati metodi u json_validate(), li jivverifika JSON mingħajr ma jiddekodifikah kompletament.
PHP 8.4 u 8.5: għodod moderni tal-lingwa
PHP 8.4 introduċiet property hooks, jiġifieri loġika direttament fuq il-proprjetajiet, u viżibbiltà asimmetrika bħal public private(set). Żiedu wkoll API DOM ġdida b'appoġġ għal HTML5 u funzjonijiet bħal array_find(), array_any() u array_all(). Skont il-paġna tar-rilaxx, l-estensjonijiet IMAP, OCI8, PDO_OCI u pspell ġew imċaqalqa mill-qalba għal PECL. Applikazzjonijiet li jużaw pereżempju IMAP imbagħad jeħtieġu pakkett separat.
PHP 8.5 ġabet l-operatur pipe, li jorbot sejħiet minn xellug għal lemin:
<?php
$slug = ' Neue Produkte 2026 '
|> trim(...)
|> strtolower(...)
|> (fn(string $s): string => str_replace(' ', '-', $s));
// Riżultat: "neue-produkte-2026"
Ġdida wkoll hija estensjoni URI li tfarrak indirizzi skont RFC 3986 u l-istandard WHATWG-URL. Dan huwa rilevanti għas-sigurtà, għax URLs ippruċessati b'mod inkonsistenti huma kawża magħrufa ta' verifiki evitati. L-operatur backtick bħala forma qasira ta' shell_exec() huwa iddeprekat, is-setting disable_classes ġie mneħħi. Min użah għandu jadatta t-tisħiħ tiegħu.
Novitajiet, aġġornamenti u PHP2Shell
Funzjonijiet ġodda tal-lingwa ma jagħlqux vulnerabbiltajiet fl-interpretatur. Kontra PHP2Shell jgħin biss l-aħħar stat tal-patches tal-fergħa rispettiva: 8.5.12, 8.4.27, 8.3.36 jew 8.2.35. Għal PHP 8.1 u 8.0 m'hemmx aktar aġġornamenti uffiċjali. Min hu mwaħħal hemmhekk irid jaġġorna, u hawnhekk in-novitajiet jgħinu ftit, il-kisriet ferm.
Triq sigura ta' aġġornament fi ħames passi:
- Stabbilixxu l-verżjoni fil-mira, f'konformità mar-rekwiżiti tas-sistema tal-manifattur u maċ-ċiklu tar-rilaxx.
- Ġibu d-dipendenzi permezz ta' Composer u l-plugins fuq stati kompatibbli.
- Ivverifikaw il-kodiċi b'analiżi statika u testijiet kontra l-verżjoni fil-mira.
- Ipprovawh f'ambjent tat-test b'kopja tad-dejta tal-produzzjoni, evalwaw il-logs għal deprekazzjonijiet.
- Aqilbu, erġgħu ibdew il-proċessi kollha ta' PHP u ddokumentaw l-istat.
Sfond dwar it-tipi jagħti It-tip sistema ta' PHP.
Kif jgħin PHP SOS konkretament?
- Nivverifikaw il-kompatibbiltà: Neżaminaw il-kodiċi u l-estensjonijiet tagħkom għal kisriet mal-verżjoni fil-mira.
- Nwettqu l-aġġornament: Bil-migrazzjoni għal verżjoni appoġġjata ta' PHP inġibu l-applikazzjonijiet fuq verżjoni ogħla, ittestjati.
- Nadattaw it-tisħiħ: Nissostitwixxu settings imneħħija bħal
disable_classesb'alternattivi effettivi. - Nżommu l-istat tal-patches: Wara l-aġġornament inżommu l-fergħa aġġornata u niddokumentaw kull restart.
Mistoqsijiet frekwenti
Liema verżjoni ta' PHP 8 għandi nuża llum?
Għal proġetti ġodda PHP 8.4 jew 8.5, għax huma appoġġjati l-itwal: 8.4 sa tmiem l-2028, 8.5 sa tmiem l-2029. Id-deċiżiv hu x'tappoġġja l-applikazzjoni tagħkom skont ir-rekwiżiti tas-sistema tal-manifattur. PHP 8.2 tintemm fil-31 ta' Diċembru 2026.
X'jinkiser l-aktar spiss meta wieħed jaqleb minn PHP 7.4 għal PHP 8?
Spiss ikunu kontrolli aktar stretti tat-tipi: funzjonijiet interni f'PHP 8 jitfgħu TypeError jew ValueError minflok ma jagħtu biss twissijiet. Jidhru wkoll tqabbil mibdul bejn numri u ktajjen ta' karattri. Analiżi statika u testijiet jiskopru l-biċċa l-kbira minn qabel.
Il-JIT jagħmel il-websajt tiegħi aktar mgħaġġla?
Il-biċċa l-kbira tal-ħin ftit. Skont il-paġna tar-rilaxx ta' PHP 8.0, il-prestazzjoni ta' applikazzjonijiet tipiċi tal-web hija madwar fil-livell ta' PHP 7.4, filwaqt li kompiti li jeħtieġu ħafna kalkolu jistgħu jibbenefikaw b'mod ċar. Minn PHP 8.4 il-JIT huwa mitfi b'mod predefinit.
Liema novitajiet jgħinu s-sigurtà?
Fost oħrajn l-estensjoni ġdida Random f'PHP 8.2 b'standard sigur b'mod kriptografiku, l-attribut SensitiveParameter kontra passwords fl-stacktraces, enums u proprjetajiet readonly għal dejta aktar inekwivoka kif ukoll l-iżbalji tat-tipi aktar konsistenti minn PHP 8.0.