Emva konyaka wophuhliso, ukukhutshwa kolwimi lweprogram ye-PHP 8.2 kwaboniswa. Isebe elitsha liquka uluhlu lweempawu ezintsha, kunye neenguqu ezininzi eziphula ukuhambelana.
Uphuculo oluphambili kwi-PHP 8.2:
- Wongeze isakhono sokumakisha iklasi njengokufunda kuphela. Iipropati kwiiklasi ezinjalo zingasetwa kanye kuphela, emva koko azikwazi ukutshintshwa. Ngaphambili, iipropathi zodidi lomntu ngamnye bezinokuphawulwa njengokufunda kuphela, kodwa ngoku ungayenza le ndlela kuzo zonke iipropathi zodidi ngaxeshanye. Ukuchaza iflegi "yokufunda kuphela" kwinqanaba leklasi ikwathintela iipropathi ekubeni zongezwe ngokuguquguqukayo eklasini. iklasi yokufunda kuphela iPosi { umsebenzi woluntu __construct( umtya woluntu $isihloko, uMbhali woluntu $umbhali, ) {} } $ iposti = iPosi entsha (/* β¦ */); $ post->unknown = 'engalunganga'; // Impazamo: Ayinakudala ipropathi eguqukayo Isithuba::$unknown
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Β«trueΒ», Β«falseΒ» ΠΈ Β«nullΒ», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΠΏΡΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Π°Π½Π΅Π΅ Β«trueΒ», Β«falseΒ» ΠΈ Β«nullΒ» ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«string|falseΒ»), Π° ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ: function alwaysFalse(): false { return false; }
- Ibonelela ngokukwazi ukuhluza iiparamitha ezinovakalelo kwimveliso yokulandelela isitaki ngexesha lempazamo. Ukusika ulwazi oluthile kunokuba yimfuneko xa ulwazi malunga neempazamo ezenzekayo zithunyelwa ngokuzenzekelayo kwiinkonzo zomntu wesithathu ezilandelela iingxaki kunye nokwazisa abaphuhlisi ngazo. Umzekelo, ungakhuphela ngaphandle iiparamitha eziquka amagama omsebenzisi, amagama agqithisiweyo, kunye nezinto eziguquguqukayo zemo engqongileyo kumkhondo. umsebenzi wovavanyo ( $foo, #[\SensitiveParameter] $password, $baz ) {phosa iNxalenye entsha('Impazamo'); } uvavanyo('foo', 'password', 'baz'); Impazamo ebulalayo: Imeko Engabanjwanga: Impazamo kuvavanyo.php:8 Ukulandelela isitaki: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} iphoswe kuvavanyo.php kumgca 8
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π² ΡΠΈΠΏΠ°ΠΆΠ°Ρ (trait, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°). ΠΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ Π² ΡΠΈΠΏΠ°ΠΆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΠΏΠ°ΠΆ (Π½ΠΎ Π½Π΅ ΡΠ΅ΡΠ΅Π· ΠΈΠΌΡ ΡΠΈΠΏΠ°ΠΆΠ°). trait Foo { public const CONSTANT = 1; public function bar(): int { return self::CONSTANT; // Fatal error } } class Bar { use Foo; } var_dump(Bar::CONSTANT); // 1
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π² Π΄ΠΈΠ·ΡΡΠ½ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ (DNF, Disjunctive Normal Form), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² (ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΈΠ· Π΄Π²ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠΏΠΎΠ²) ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² (ΡΠΈΠΏΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ²). class Foo { public function bar((A&B)|null $entity) { if ($entity === null) { return null; } return $entity; } }
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Β«RandomΒ» c ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π²ΠΎΠ΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ. ΠΠΎΠ΄ΡΠ»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π²ΠΎΠ΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π», Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΡΠ΅ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈ ΡΡΡΠΎΠΊ, Π²ΡΠ±ΠΎΡΠ° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠΎ ΡΠ²ΠΎΠΈΠΌ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ. $rng = $is_production ? new Random\Engine\Secure() : new Random\Engine\Mt19937(1234); $randomizer = new Random\Randomizer($rng); $randomizer->shuffleString(βfoobarβ);
- Kuphunyezwe uguqulo lwemeko ezimeleyo yendawo. Imisebenzi efana ne-strtolower () kunye ne-strtoupper () ngoku ihlala iguqula imeko yeempawu kuluhlu lwe-ASCII ngokungathi imiselwe kwi-"C" yendawo.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: mysqli_execute_query, curl_upkeep, memory_reset_peak_usage, ini_parse_quantity, libxml_get_external_entity_loader, sodium_crypto_stream_xchacha20_xor_ic, openssl_cipher_key_length.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
- ΠΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² Π² ΠΊΠ»Π°ΡΡΠ΅. Π PHP 9.0 ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ, ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΌ Π² ΠΊΠ»Π°ΡΡΠ΅, Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ (ErrorException). ΠΠ»Π°ΡΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ __get ΠΈ __set Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ², ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² stdClass ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΎΡ ΡΠΊΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π°ΡΡΠΈΠ±ΡΡ Β«#[AllowDynamicProperties]Β», ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ².
- Ukukwazi ukutshintsha amaxabiso aguquguqukayo kwimitya usebenzisa intetho ethi "${var}" kunye ne-${(var)} iye yarhoxiswa. Inkxaso esetyenziswa ngokuqhelekileyo "{$var}" kunye ne "$var" endaweni egciniweyo igciniwe. Umzekelo: "Molo {$world}"; Kulungile "Molo ihlabathi"; Kulungile "Molo ${ihlabathi}"; Yekisiwe: Ukusebenzisa i-${} kumtya kuyekisiwe
- Iifowuni ezifowunelwayo ezingaxhaswanga ezingabizwa ngokuthi "call_user_func($callable)" kodwa azikuxhasi ukufowuna ngohlobo lwe "$callable()": "self::indlela" "parent::indlela" "static" ::indlela " ["self", "indlela"] ["umzali", "indlela"] ["static", "method"] ["Foo", "Bar::method"] [iFoo entsha, "Ibha: :indlela" ]
- Π Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° error_log_mode, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π»ΠΎΠ³Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ.
umthombo: opennet.ru