Ujian alfa PHP 8.2 telah bermula

Keluaran alfa pertama cabang baru bahasa pengaturcaraan PHP 8.2 telah dibentangkan. Tayangannya dijadualkan pada 24 November. Inovasi utama sudah tersedia untuk ujian atau dirancang untuk pelaksanaan dalam PHP 8.2:

  • Jenis berasingan "false" dan "null" telah ditambah, yang boleh digunakan, sebagai contoh, untuk mengembalikan tanda siap dengan ralat atau nilai kosong oleh fungsi. Sebelum ini, "false" dan "null" hanya boleh digunakan bersama dengan jenis lain (contohnya, "string|false"), tetapi kini ia boleh digunakan secara berasingan: function alwaysFalse(): false { return false; }
  • Menambah keupayaan untuk menandakan kelas sebagai baca sahaja. Sifat dalam kelas tersebut boleh ditetapkan sekali sahaja, selepas itu ia tidak akan tersedia untuk perubahan. Sebelum ini, sifat kelas individu boleh ditandakan baca sahaja, tetapi kini anda boleh menghidupkan mod ini untuk semua sifat kelas sekaligus. Menentukan bendera "baca sahaja" di peringkat kelas juga menyekat penambahan sifat dinamik pada kelas. kelas baca sahaja Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'salah'; // Ralat: Tidak boleh mencipta sifat dinamik Post::$unknown
  • Keupayaan untuk mencipta sifat secara dinamik dalam kelas telah ditamatkan (seperti "post->unknown" dalam contoh di atas). Dalam PHP 9.0, mengakses sifat yang tidak ditakrifkan pada asalnya dalam kelas akan mengakibatkan ralat (ErrorException). Kelas yang menyediakan kaedah __get dan __set untuk mencipta sifat, atau sifat dinamik dalam stdClass akan terus berfungsi tidak berubah, hanya kerja tersirat dengan sifat tidak wujud akan dihentikan untuk melindungi pembangun daripada ralat tersembunyi. Untuk memastikan kod lama berfungsi, atribut "#[AllowDynamicProperties]" dicadangkan, membenarkan penggunaan sifat dinamik.
  • Dengan syarat keupayaan untuk menapis tetapan sensitif dalam output surih tindanan pada masa ralat. Memotong maklumat tertentu mungkin diperlukan apabila maklumat tentang ralat yang berlaku dihantar secara automatik kepada perkhidmatan pihak ketiga yang menjejaki masalah dan memaklumkan pembangun tentangnya. Sebagai contoh, anda boleh mengecualikan parameter daripada jejak yang termasuk nama pengguna, kata laluan dan pembolehubah persekitaran. ujian fungsi( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'password', 'baz'); Ralat maut: Pengecualian Tidak Ditangkap: Ralat dalam test.php:8 Surih tindanan: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} dilemparkan dalam test.php dalam talian 8
  • Keupayaan untuk menggantikan nilai pembolehubah ke dalam rentetan menggunakan ungkapan "${var}" dan ${(var)}" telah ditamatkan. Sokongan untuk penggantian "{$var}" dan "$var" yang biasa digunakan telah dikekalkan. Contohnya: "Hello {$world}"; OK "Hello $world"; OK "Hello ${world}"; Ditamatkan: Menggunakan ${} dalam rentetan ditamatkan
  • Pemanggil yang disokong separa yang boleh dipanggil melalui "call_user_func($callable)" telah ditamatkan, tetapi tidak menyokong panggilan dalam bentuk "$callable()": "self::method" "parent::method" "static :: kaedah" ["diri", "kaedah"] ["ibu bapa", "kaedah"] ["statik", "kaedah"] ["Foo", "Bar::kaedah"] [Foo baharu, "Bar: : kaedah "]
  • Melaksanakan penukaran kes bebas tempatan. Fungsi seperti strtolower() dan strtoupper() kini sentiasa menukar kes aksara dalam julat ASCII, seperti apabila menetapkan tempat kepada "C".

Sumber: opennet.ru

Tambah komen