Nagsimula na ang alpha testing ng PHP 8.2

Ang unang alpha release ng bagong sangay ng PHP 8.2 programming language ay ipinakita. Ang paglabas ay naka-iskedyul para sa Nobyembre 24. Ang mga pangunahing inobasyon ay magagamit na para sa pagsubok o binalak para sa pagpapatupad sa PHP 8.2:

  • Nagdagdag ng magkahiwalay na uri na "false" at "null", na maaaring gamitin, halimbawa, para sa isang function na magbalik ng flag ng pagwawakas ng error o isang walang laman na value. Dati, ang "false" at "null" ay maaari lamang gamitin kasabay ng iba pang mga uri (halimbawa, "string|false"), ngunit ngayon ay maaari na silang gamitin nang hiwalay: function alwaysFalse(): false { return false; }
  • Nagdagdag ng kakayahang markahan ang isang klase bilang read-only. Ang mga katangian sa naturang mga klase ay maaaring itakda nang isang beses lamang, pagkatapos nito ay hindi na sila mababago. Dati, ang mga indibidwal na katangian ng klase ay maaaring mamarkahang read-only, ngunit ngayon ay maaari mong paganahin ang mode na ito para sa lahat ng mga katangian ng klase nang sabay-sabay. Ang pagtukoy sa flag na "readonly" sa antas ng klase ay humaharang din sa mga katangian mula sa dynamic na pagdaragdag sa klase. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'mali'; // Error: Hindi makagawa ng dynamic na property Post::$unknown
  • Ang kakayahang dynamic na lumikha ng mga katangian sa isang klase (tulad ng "post->unknown" sa halimbawa sa itaas) ay hindi na ginagamit. Sa PHP 9.0, ang pag-access sa mga katangian na hindi unang tinukoy sa klase ay magreresulta sa isang error (ErrorException). Ang mga klase na nagbibigay ng __get at __set na mga pamamaraan para sa paggawa ng mga property, o mga dynamic na property sa stdClass, ay patuloy na gagana nang hindi nagbabago, tanging ang implicit na trabaho na may mga hindi umiiral na property ang susuportahan upang maprotektahan ang developer mula sa mga nakatagong bug. Upang mapanatili ang gawain ng lumang code, ang attribute na "#[AllowDynamicProperties]" ay iminungkahi, na nagpapahintulot sa paggamit ng mga dynamic na katangian.
  • Nagbibigay ng kakayahang mag-filter ng mga sensitibong parameter sa output ng stack trace habang may error. Maaaring kailanganin ang pagputol ng ilang partikular na impormasyon kapag ang impormasyon tungkol sa mga error na nangyayari ay awtomatikong ipinadala sa mga serbisyo ng third-party na sumusubaybay sa mga problema at nagpapaalam sa mga developer tungkol sa mga ito. Halimbawa, maaari mong ibukod ang mga parameter na kinabibilangan ng mga username, password, at mga variable ng kapaligiran mula sa pagsubaybay. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'password', 'baz'); Malalang error: Uncaught Exception: Error sa test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} na itinapon sa test.php sa linya 8
  • Ang kakayahang palitan ang mga variable na halaga sa mga string gamit ang mga expression na "${var}" at ${(var)} ay hindi na ginagamit. Ang suporta para sa karaniwang ginagamit na "{$var}" at "$var" na mga pamalit ay napanatili. Halimbawa: "Hello {$world}"; OK "Hello $world"; OK "Hello ${world}"; Hindi na ginagamit: Ang paggamit ng ${} sa mga string ay hindi na ginagamit
  • Hindi na ginagamit ang bahagyang suportadong mga callable na maaaring tawagan sa pamamagitan ng "call_user_func($callable)" ngunit hindi sumusuporta sa pagtawag sa anyo ng "$callable()": "self::method" "parent::method" "static" ::method " ["sarili", "paraan"] ["magulang", "paraan"] ["static", "paraan"] ["Foo", "Bar::paraan"] [bagong Foo, "Bar: :paraan" ]
  • Ipinatupad ang locale-independent na conversion ng kaso. Ang mga function tulad ng strtolower() at strtoupper() ngayon ay palaging nagko-convert ng case ng mga character sa hanay ng ASCII na parang nakatakda sa lokal na "C".

Pinagmulan: opennet.ru

Magdagdag ng komento