Ar Γ΄l blwyddyn o ddatblygiad wedi'i gyflwyno rhyddhau iaith rhaglennu PHP 7.4. Mae'r gangen newydd yn cynnwys cyfres o nodweddion newydd, yn ogystal Γ’ nifer o newidiadau sy'n torri cydnawsedd.
Priodweddau Teipiedig - gall priodweddau dosbarth bellach gynnwys datganiadau math, er enghraifft:
Defnyddiwr dosbarth {
int $id cyhoeddus;
llinyn cyhoeddus $name;
}
Talfyredig cystrawen ar gyfer diffinio swyddogaethau βfn(parameter_list) => exprβ gyda chwmpas wedi'i rwymo yn Γ΄l gwerth. Er enghraifft, mae βfn($x) => $x + $yβ yn cyfateb i β$fn2 = swyddogaeth ($x) defnyddio ($y) {dychwelyd $x + $y;}β);
Gweithredwr aseiniad llaw-fer "??=" y gellir ei ddefnyddio i ddiffinio gwerth rhagosodedig ("a ??= b" yn debyg i "a = a ?? b", os yw "a" yn cael ei ddiffinio mae ei werth yn cael ei storio, ac os na chaiff ei ddiffinio yn cael y gwerth "b" );
Cyfyngedig cyfle cadw hierarchaeth etifeddiaeth mathau mewn mathau o ddychweliadau deilliedig, neu'r gallu i wrthdroi hierarchaeth y mathau gwreiddiol mewn mathau o ddadl ddeilliedig (cydamrywiant math dychwelyd a gwrthamrywiad math dadl). Bellach gellir defnyddio'r lluniadau canlynol yn PHP:
dosbarth A {}
dosbarth B yn ymestyn A {}
Cynhyrchydd dosbarth {
dull swyddogaeth gyhoeddus(): A {}
}
dosbarth ChildProducer yn ymestyn Cynhyrchydd {
dull swyddogaeth gyhoeddus(): B {}
}
Yn dadbacio gweithredwr y tu mewn i araeau ββ¦$varβ, caniatΓ‘u amnewid araeau presennol wrth ddiffinio arae newydd;
Cyfle cynrychiolaeth weledol niferoedd mawr gydag amffinyddion mewn llythrennol rhifol (1_000_000_00);
Cymorth cysylltiadau gwan, sy'n eich galluogi i gadw cyfeiriad at wrthrych, ond peidiwch Γ’ rhwystro'r casglwr sbwriel rhag dileu'r gwrthrych cysylltiedig;
New y mecanwaith cyfresoli gwrthrychau (cyfuniad o Serializable a __sleep()/__wakeup()), a ddisodlodd y rhyngwyneb Serializable, a fydd yn anghymeradwy;
// Yn dychwelyd arae sy'n cynnwys holl gyflwr y gwrthrych;
swyddogaeth gyhoeddus __serialize(): arae;
// Yn adfer cyflwr gwrthrych o arae
swyddogaeth gyhoeddus __unserialize(arae $data): gwag;
Caniateir i daflu eithriadau o ddull __i Llinyn();
Ychwanegwyd cefnogaeth ar gyfer rhag-lwytho'r storfa cod gwrthrych. Ychwanegwyd paramedr ar gyfer gosod opcache.preload, lle gallwch chi nodi sgript PHP a fydd yn cael ei llunio a'i rhedeg pan fydd y gweinydd yn dechrau. Gall y sgript hon lwytho cod op ffeiliau eraill trwy eu cynnwys yn uniongyrchol neu ddefnyddio'r swyddogaeth opcache_compile_file();
Ychwanegwyd swyddogaeth crc32c i'r estyniad Hash i gyfrifo symiau siec gan ddefnyddio'r polynomial Castagnoli;
Ychwanegwyd cefnogaeth i'r swyddogaeth password_hash() ar gyfer dulliau stwnsio cyfrinair argon2i ac argin2id, wrth weithredu'r llyfrgell Sodiwm, os caiff PHP ei adeiladu heb libargon;
Wedi ychwanegu ffwythiant mb_str_split(), tebyg i str_split(), ond yn gweithredu nid gyda beit ond gyda safleoedd nod mewn llinyn aml-beit;
Bellach mae gan y swyddogaeth strip_tags () y gallu i basio arae gydag enwau tagiau, h.y. yn lle strip_tags($str, ββ) gallwch nawr nodi strip_tags($str, [βaβ, βpβ]);
proc_open() yn caniatΓ‘u i'r operands gael eu rhestru mewn arae, yn hytrach na llinyn i'w rhedeg, ac mae hefyd yn darparu ailgyfeirio edau a chefnogaeth ar gyfer disgrifydd ffeil nwl;
// Fel 2>&1 yn y plisgyn
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['ailgyfeirio', 1]], $pibellau);
// fel 2>/dev/null neu 2>nul yn y plisgyn
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pibellau);
Mae estyniadau Firebird/Interbase, Recode a WDDX wedi'u heithrio o'r dosbarthiad sylfaenol. Mae'r estyniadau hyn bellach yn cael eu dosbarthu trwy PECL;
Trosglwyddwyd i gategori hen ffasiwn nodweddion fel gweithredwyr teiran nythu heb gromfachau, cyrchu elfennau arae a llinynnau gan ddefnyddio braces cyrliog (β$var{$idx}β), y ffwythiant is_real() a chastio i real, gan ddefnyddio allweddair rhiant heb riant ddosbarth, paramedr allow_url_include configurations , gan ddefnyddio array_key_exists() ar wrthrychau.
Mae'r swyddogaethau get_magic_quotes_gpc(), get_magic_quotes_runtime(), a
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().
Mae rhybudd am ddefnyddio nodwedd anarferedig wedi'i ddarparu wrth geisio prosesu symbolau anghywir mewn ffwythiannau
base_convert(), bindec(), octdec() a hexdec(), ac wrth nodi patrwm di-linyn yn mb_ereg_replace().