Mae profion Alpha o PHP 8.2 wedi dechrau

Mae datganiad alffa cyntaf y gangen newydd o iaith raglennu PHP 8.2 wedi'i gyflwyno. Mae'r datganiad wedi'i drefnu ar gyfer Tachwedd 24. Y prif arloesiadau sydd eisoes ar gael i'w profi neu y bwriedir eu gweithredu yn PHP 8.2:

  • Ychwanegwyd mathau ar wahân “ffug” a “nwl”, y gellir eu defnyddio, er enghraifft, ar gyfer swyddogaeth i ddychwelyd baner terfynu gwall neu werth gwag. Yn flaenorol, dim ond ar y cyd â mathau eraill y gellid defnyddio “anwir” a “nwl” (er enghraifft, “llinyn | ffug”), ond nawr gellir eu defnyddio ar wahân: swyddogaeth alwaysFalse(): ffug { dychwelyd ffug; }
  • Ychwanegwyd y gallu i farcio dosbarth fel un darllen yn unig. Dim ond unwaith y gellir gosod eiddo mewn dosbarthiadau o'r fath, ac ar ôl hynny ni ellir eu newid. Yn flaenorol, gellid marcio priodweddau dosbarth unigol yn ddarllen-yn-unig, ond nawr gallwch chi alluogi'r modd hwn ar gyfer holl briodweddau dosbarth ar unwaith. Mae nodi'r faner "darllen yn unig" ar lefel dosbarth hefyd yn rhwystro eiddo rhag cael eu hychwanegu'n ddeinamig i'r dosbarth. dosbarth darllen yn unig Post { swyddogaeth gyhoeddus __construct( llinyn cyhoeddus $title, Awdur cyhoeddus $author, ) {} } $ post = Post newydd(/* … */); $post->unknown = 'anghywir'; // Error: Methu creu priodwedd deinamig Post::$unknown
  • Mae'r gallu i greu priodweddau deinamig mewn dosbarth (fel "post->unknown" yn yr enghraifft uchod) wedi'i anghymeradwyo. Yn PHP 9.0, bydd cyrchu eiddo nad ydynt wedi'u diffinio i ddechrau yn y dosbarth yn arwain at wall (ErrorException). Bydd dosbarthiadau sy'n darparu dulliau __get a __set ar gyfer creu eiddo, neu briodweddau deinamig yn stdClass yn parhau i weithio heb unrhyw newidiadau, dim ond gwaith ymhlyg gydag eiddo nad yw'n bodoli fydd yn cael ei gefnogi i amddiffyn y datblygwr rhag bygiau cudd. Er mwyn cadw gwaith yr hen god, cynigir y briodwedd “#[AllowDynamicProperties]”, gan ganiatáu defnyddio priodweddau deinamig.
  • Yn darparu'r gallu i hidlo paramedrau sensitif yn yr allbwn olrhain pentwr yn ystod gwall. Efallai y bydd angen dileu gwybodaeth benodol pan fydd gwybodaeth am wallau sy'n digwydd yn cael ei hanfon yn awtomatig at wasanaethau trydydd parti sy'n olrhain problemau ac yn hysbysu datblygwyr amdanynt. Er enghraifft, gallwch eithrio paramedrau sy'n cynnwys enwau defnyddwyr, cyfrineiriau, a newidynnau amgylchedd rhag olrhain. prawf swyddogaeth ( $ foo , #[ \ SensitiveParameter ] $ password , $baz ) { taflu Eithriad newydd ('Gwall'); } prawf ('foo', 'cyfrinair', 'baz'); Gwall angheuol: Heb ei ddal Eithriad: Gwall yn test.php:8 Olrhain pentwr: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} wedi'i daflu i test.php ar lein 8
  • Mae'r gallu i amnewid gwerthoedd newidiol yn llinynnau gan ddefnyddio'r ymadroddion "${var}" a ${(var)} wedi'i anghymeradwyo. Mae cefnogaeth ar gyfer yr amnewidion "{$var}" a "$var" a ddefnyddir yn gyffredin wedi'i gadw. Er enghraifft: "Helo {$world}"; Iawn "Helo $byd"; Iawn "Helo ${world}"; Anghymeradwy: Mae defnyddio ${} mewn llinynnau yn anghymeradwy
  • Galwadau anghymeradwy a gefnogir yn rhannol y gellir eu galw trwy "call_user_func($callable)" ond nid ydynt yn cefnogi galw ar ffurf "$callable()" : "self::method" "riant::method" "statig" ::method " ["hunan", "dull"] [" rhiant", "dull"] [" statig", "dull"] ["Foo", "Bar::dull"] [Foo newydd, "Bar: :method" ]
  • Gweithredwyd trosi achos locale-annibynnol. Mae swyddogaethau fel strtolower() a strtoupper() bellach bob amser yn trosi achos nodau yn yr ystod ASCII fel pe baent wedi'u gosod i'r locale "C".

Ffynhonnell: opennet.ru

Ychwanegu sylw