Tès Alpha nan PHP 8.2 te kòmanse

Premye lage alpha nan nouvo branch lang PHP 8.2 pwogramasyon an te prezante. Lage a pwograme pou 24 novanm. Inovasyon prensipal yo deja disponib pou tès oswa planifye pou aplikasyon nan PHP 8.2:

  • Te ajoute kalite separe "fo" ak "nil", ki ka itilize, pou egzanp, pou yon fonksyon retounen yon drapo revokasyon erè oswa yon valè vid. Anvan sa, "false" ak "null" 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; }
  • 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
  • Kapasite pou kreye pwopriyete dinamik nan yon klas (tankou "pòs-> enkoni" nan egzanp ki anwo a) te depreke. 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.
  • 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
  • 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" ]
  • 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".

Sous: opennet.ru

Add nouvo kòmantè