Kutulutsidwa kwa chilankhulo cha pulogalamu ya PHP 8.2

Pambuyo pa chaka cha chitukuko, kutulutsidwa kwa chinenero cha pulogalamu ya PHP 8.2 kunaperekedwa. Nthambi yatsopanoyi ili ndi mndandanda wazinthu zatsopano, komanso zosintha zingapo zomwe zimasokoneza kugwirizanitsa.

Kusintha kwakukulu mu PHP 8.2:

  • Anawonjezera luso loyika kalasi ngati yowerenga-yokha. Katundu m'makalasi oterowo akhoza kukhazikitsidwa kamodzi kokha, pambuyo pake sadzakhalapo kuti asinthe. M'mbuyomu, katundu wamagulu amtundu uliwonse amatha kulembedwa kuti owerenga okha, koma tsopano mutha kuyatsa mawonekedwe awa pazinthu zonse zamakalasi nthawi imodzi. Kutchula mbendera ya "readonly" pamlingo wa kalasi kumalepheretsanso kuwonjezereka kwa zinthu m'kalasi. readonly class Post {ntchito yapagulu __construct (chingwe chapagulu $ mutu, Wolemba pagulu $ wolemba, ) {} } $ positi = Post yatsopano (/* … */); $ post-> osadziwika = 'zolakwika'; // Cholakwika: Sitingathe kupanga katundu wosinthika Post::$unknown
  • Mitundu yosiyana yowonjezeredwa "zoona", "zabodza" ndi "null", zomwe zingatenge mtengo umodzi wokha ndipo zimagwiritsidwa ntchito, mwachitsanzo, kubwezera ntchito ndi mbendera yothetsa zolakwika kapena mtengo wopanda kanthu. M'mbuyomu, "zoona", "zabodza" ndi "zopanda pake" zitha kugwiritsidwa ntchito limodzi ndi mitundu ina (mwachitsanzo, "chingwe| zabodza"), koma tsopano zitha kugwiritsidwa ntchito padera: ntchito alwaysFalse(): false { return false ; }
  • Zinapereka kuthekera kosefa zochunira muzotulutsa zotsatizana panthawi ya vuto. Kudula zidziwitso zina kungafunike ngati zambiri za zolakwika zomwe zimachitika zimatumizidwa zokha kumagulu ena omwe amatsata zovuta ndikudziwitsa opanga za iwo. Mwachitsanzo, mutha kuchotsa magawo omwe ali ndi mayina olowera, mawu achinsinsi, ndi zosintha zachilengedwe. ntchito test($foo, #[\SensitiveParameter] $password, $baz) {ponyani Kupatulako kwatsopano('Zolakwa'); } test('foo', 'password', 'baz'); Cholakwika choopsa: Kupatulapo Osaphunzitsidwa: Zolakwika mu test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} yaponyedwa mu test.php pa mzere 8
  • Amaloledwa kufotokozera zokhazikika mumayendedwe (khalidwe, njira yogwiritsiranso ntchito kachidindo). Zomwe zimatanthauzidwa mu khalidwe zimatha kupezeka kudzera m'kalasi yomwe imagwiritsa ntchito khalidwe (koma osati kudzera mu dzina la khalidwe). khalidwe Foo { public const CONSTANT = 1; pagulu ntchito bar(): int {bwererani nokha::CONSTANT; // Cholakwika chakupha } } kalasi Bar { gwiritsani ntchito Foo; } var_dump(Bar::CONSTANT); // 1
  • Anawonjezera kuthekera kutchula mitundu mu mawonekedwe achilendo (DNF, Disjunctive Normal Form), yomwe imakupatsani mwayi wophatikiza mgwirizano wamitundu (zosonkhanitsira zamitundu iwiri kapena kuposerapo) ndi mphambano yamitundu (mitundu yomwe zikhalidwe zake zimagwera pansi zingapo. mitundu nthawi imodzi). class Foo {public function bar((A&B)|null $entity) {ngati ($entity === null) { return null; } kubweza $entity; }}
  • Kuwonjezedwa kwatsopano kwa "Random" kwaperekedwa ndi ntchito ndi makalasi opangira manambala achinyengo ndi matsatidwe. Gawoli limapereka mawonekedwe okhudzana ndi chinthu, limakupatsani mwayi wosankha injini zosiyanasiyana zopangira manambala achinyengo, kuphatikiza omwe ali oyenera kugwiritsidwa ntchito mu cryptography, ndipo amapereka ntchito zothandizira, mwachitsanzo, kusakaniza mosintha masanjidwe ndi zingwe, kusankha makiyi osasinthika, kugwiritsa ntchito nthawi imodzi majenereta angapo okhala ndi dziko lanu lodziyimira pawokha. $rng = $ndi_kupanga? new Random\Engine\Secure() : new Random\Engine\Mt19937(1234); $randomizer = new Random\Randomizer($rng); $randomizer-> shuffleString('foobar');
  • Kusintha kwamilandu kodziyimira pawokha komwe kwakhazikitsidwa. Ntchito monga strtolower () ndi strtoupper () tsopano nthawi zonse zimasintha mawonekedwe a zilembo mumtundu wa ASCII, monga pokhazikitsa malo kukhala "C".
  • Zowonjezera zatsopano: 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.
  • Njira zatsopano zowonjezera: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Kuthekera kopanga zinthu m'kalasi kwatsitsidwa. Mu PHP 9.0, kupeza katundu yemwe sanatchulidwe m'kalasi kumabweretsa cholakwika (ErrorException). Makalasi omwe amapereka __get ndi __set njira zopangira katundu, kapena katundu wamphamvu mu stdClass adzapitirizabe kugwira ntchito popanda kusintha, ntchito yokhazikika yokhala ndi zinthu zomwe palibe yomwe idzathandizidwe kuteteza wopanga mapulogalamu ku nsikidzi zobisika. Kuti musunge ntchito ya code yakale, malingaliro a "#[AllowDynamicProperties]" akuperekedwa, kulola kugwiritsa ntchito zinthu zamphamvu.
  • Kutha kusintha zingwe zosinthika kukhala zingwe pogwiritsa ntchito mawu akuti "${var}" ndi ${(var)}" kwachotsedwa. Thandizo la "{$var}" ndi "$var" logwiritsidwa ntchito kawirikawiri lasungidwa. Mwachitsanzo: "Moni {$world}"; Chabwino "Moni $dziko"; CHABWINO "Moni ${dziko}"; Yatsitsidwa: Kugwiritsa ntchito ${} m'mizere kwatsitsidwa
  • Zoyimba zomwe zatsitsidwa pang'ono zomwe zitha kutchedwa "call_user_func($callable)", koma sizigwirizana ndi kuyimba ngati "$callable()": "self::method" "parent::method" "static::method" ["self", "method"] ["parent", "method"]","Fomethod":"["Fometho]": ["Fometho]" ["Fometho]" ["Fometho]" ["Fometho]" ["Fometho]" :: njira"]
  • Error_log_mode malangizo awonjezedwa pazikhazikiko, kukulolani kuti muwone momwe mungafikire pa chipika cholakwika.

Source: opennet.ru

Kuwonjezera ndemanga