PHP 8.2 lage langaj pwogramasyon

Apre yon ane devlopman, yo te prezante liberasyon lang pwogramasyon PHP 8.2 la. Branch nan nouvo gen ladan yon seri de karakteristik nouvo, osi byen ke plizyè chanjman ki kraze konpatibilite.

Amelyorasyon kle nan PHP 8.2:

  • Te ajoute kapasite pou make yon klas kòm lekti sèlman. Pwopriyete nan klas sa yo ka mete sèlman yon fwa, apre sa yo pa ka chanje. Anvan sa, pwopriyete klas endividyèl yo te kapab make pou lekti sèlman, men kounye a ou ka aktive mòd sa a pou tout pwopriyete klas yo alafwa. Espesifye "readonly" drapo a nan nivo klas la tou bloke pwopriyete yo pa ajoute dinamik nan klas la. klas lekti sèlman Post { fonksyon piblik __construct( chaîne piblik $tit, Otè piblik $otè, ) {} } $post = nouvo Post(/* … */); $post->unknown = 'mal'; // Erè: Pa ka kreye pwopriyete dinamik Post::$unknown
  • Te ajoute kalite separe "vre", "fo" ak "nil", ki ka pran sèlman yon valè valab epi yo itilize, pou egzanp, retounen yon fonksyon ki gen yon drapo revokasyon erè oswa yon valè vid. Anvan sa, "vrè", "fo" ak "nil" te kapab sèlman itilize ansanm ak lòt kalite (pa egzanp, "string|false"), men kounye a yo ka itilize separeman: function alwaysFalse(): false { return false ; }
  • Bay kapasite nan filtre paramèt sansib nan pwodiksyon an tras chemine pandan yon erè. Koupe sèten enfòmasyon ka nesesè lè enfòmasyon sou erè ki rive otomatikman voye bay sèvis twazyèm pati ki swiv pwoblèm ak enfòme devlopè sou yo. Pou egzanp, ou ka eskli paramèt ki gen ladan non itilizatè, modpas, ak varyab anviwònman nan trase. tès fonksyon( $foo, #[\SensitiveParameter] $modpas, $baz ) { throw new Exception('Error'); } test('foo', 'modpas', 'baz'); Erè fatal: Eksepsyon ki pa kenbe: Erè nan test.php:8 Stack tras: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {principal} jete nan test.php sou liy 8
  • Pèmèt yo defini konstan nan karakteristik (trait, yon mekanis pou re-itilize kòd). Ou ka jwenn aksè nan konstan yo defini nan yon karakteristik atravè klas ki sèvi ak karakteristik la (men pa atravè non an). trait Foo { public const CONSTANT = 1; piblik fonksyon bar(): int { return self::CONSTANT; // Fatal error } } class Bar { itilize Foo; } var_dump(Bar::CONSTANT); // 1
  • Te ajoute kapasite nan presize kalite nan fòm nòmal disjonktif (DNF, Fòm nòmal disjonktif), ki pèmèt ou konbine inyon an nan kalite (koleksyon de oswa plis kalite) ak entèseksyon an nan kalite (kalite ki gen valè tonbe anba plizyè kalite). kalite ansanm). klas Foo { fonksyon piblik ba ((A&B)|nil $antite) { if ($antite === nil) { retounen nil; } retounen $antite; } }
  • Yo te pwopoze yon nouvo ekstansyon "O aza" ak fonksyon ak klas pou jenere nimewo pseudo-o aza ak sekans. Modil la bay yon koòdone oryante objè, pèmèt ou chwazi motè diferan pou jenere nimewo pseudo-o aza, ki gen ladan sa ki apwopriye pou itilize nan kriptografi, epi li bay fonksyon oksilyè, pou egzanp, pou melanje owaza ranje ak fisèl, chwazi kle etalaj o aza, itilizasyon similtane plizyè dèlko ak pwòp eta endepandan ou. $rng = $se_pwodiksyon ? nouvo Random\Engine\Secure(): nouvo Random\Engine\Mt19937(1234); $randomize = nouvo Random\Randomizer($rng); $randomize->shuffleString('foobar');
  • Aplike konvèsyon ka endepandan lokal yo. Fonksyon tankou strtolower() ak strtoupper() kounye a toujou konvèti ka karaktè nan seri ASCII kòm si yo mete nan lokal "C".
  • Te ajoute nouvo fonksyon: 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.
  • Te ajoute nouvo metòd: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Kapasite pou kreye pwopriyete dinamik nan yon klas te obsolète. Nan PHP 9.0, aksè nan pwopriyete ki pa okòmansman defini nan klas la pral lakòz yon erè (ErrorException). Klas ki bay metòd __get ak __set pou kreye pwopriyete, oswa pwopriyete dinamik nan stdClass ap kontinye travay san chanjman, sèlman travay implicite ak pwopriyete ki pa egziste yo pral sipòte pou pwoteje pwomotè a kont ensèk kache. Pou prezève travay ansyen kòd la, yo pwopoze atribi "#[AllowDynamicProperties]", ki pèmèt itilizasyon pwopriyete dinamik.
  • Kapasite pou ranplase valè varyab yo nan fisèl lè l sèvi avèk ekspresyon "${var}" ak ${(var)} yo te depreche. Sipò pou ranplasman "{$var}" ak "$var" yo itilize souvan yo te konsève. Pa egzanp: "Bonjou {$mond}"; OK "Bonjou $mond"; OK "Bonjou ${mond}"; Deprecated: Sèvi ak ${} nan fisèl se obsolèt
  • Depreke pasyèlman sipòte callables ki ka rele atravè "call_user_func($callable)" men pa sipòte apèl nan fòm "$callable()": "self::method" "parent::method" "static" ::method " ["pwòp tèt ou", "metòd"] ["paran", "metòd"] ["estatik", "metòd"] ["Foo", "Bar::metòd"] [nouvo Foo, "Bar::metòd" ]
  • Yo te ajoute direktiv error_log_mode nan paramèt yo, sa ki pèmèt ou detèmine mòd aksè nan boutèy erè a.

Sous: opennet.ru

Add nouvo kòmantè