Pengujian alfa PHP 8.2 telah dimulai

Rilis alpha pertama dari cabang baru bahasa pemrograman PHP 8.2 telah disajikan. Rilis dijadwalkan pada 24 November. Inovasi utama sudah tersedia untuk pengujian atau direncanakan untuk implementasi di PHP 8.2:

  • Tipe terpisah "false" dan "null" telah ditambahkan, yang dapat digunakan, misalnya, untuk mengembalikan tanda penyelesaian dengan kesalahan atau nilai kosong dari suatu fungsi. Sebelumnya, "false" dan "null" hanya dapat digunakan bersamaan dengan tipe lain (misalnya, "string|false"), tetapi sekarang keduanya dapat digunakan secara terpisah: function alwaysFalse(): false { return false; }
  • Menambahkan kemampuan untuk menandai kelas sebagai hanya-baca. Properti di kelas tersebut hanya dapat disetel sekali, setelah itu tidak akan tersedia untuk diubah. Sebelumnya, properti kelas individu dapat ditandai hanya-baca, tetapi sekarang Anda dapat mengaktifkan mode ini untuk semua properti kelas sekaligus. Menentukan flag "readonly" di tingkat kelas juga memblokir penambahan dinamis properti ke kelas. kelas hanya baca Posting { public function __construct( public string $title, Public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'salah'; // Error: Tidak dapat membuat properti dinamis Post::$unknown
  • Kemampuan untuk membuat properti secara dinamis di kelas sudah tidak digunakan lagi (seperti "post->unknown" pada contoh di atas). Di PHP 9.0, mengakses properti yang awalnya tidak ditentukan di kelas akan menghasilkan kesalahan (ErrorException). Kelas yang menyediakan metode __get dan __set untuk membuat properti, atau properti dinamis di stdClass akan terus bekerja tidak berubah, hanya pekerjaan implisit dengan properti yang tidak ada yang akan dihentikan untuk melindungi pengembang dari kesalahan tersembunyi. Agar kode lama tetap berfungsi, atribut "#[AllowDynamicProperties]" diusulkan, memungkinkan penggunaan properti dinamis.
  • Memberikan kemampuan untuk memfilter pengaturan sensitif dalam keluaran pelacakan tumpukan pada saat terjadi kesalahan. Memotong informasi tertentu mungkin diperlukan saat informasi tentang kesalahan yang terjadi dikirim secara otomatis ke layanan pihak ketiga yang melacak masalah dan memberi tahu pengembang tentangnya. Misalnya, Anda dapat mengecualikan parameter dari pelacakan yang menyertakan nama pengguna, sandi, dan variabel lingkungan. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'password', 'baz'); Kesalahan fatal: Pengecualian Tidak Tertangkap: Kesalahan dalam test.php:8 Pelacakan tumpukan: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} dilemparkan ke dalam test.php pada baris 8
  • Kemampuan untuk mengganti nilai variabel menjadi string menggunakan ekspresi "${var}" dan ${(var)}" sudah tidak digunakan lagi. Dukungan untuk penggantian "{$var}" dan "$var" yang umum digunakan telah dipertahankan. Misalnya: "Halo {$dunia}"; Oke "Halo $dunia"; Oke "Halo ${dunia}"; Tidak digunakan lagi: Menggunakan ${} dalam string tidak digunakan lagi
  • Callable yang didukung sebagian yang tidak digunakan lagi yang dapat dipanggil melalui "call_user_func($callable)", tetapi tidak mendukung pemanggilan dalam bentuk "$callable()": "self::method" "parent::method" "static::method" ["self", "method"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [new Foo, "Bar:: method"]
  • Mengimplementasikan konversi kasus independen-lokal. Fungsi seperti strtolower() dan strtoupper() sekarang selalu mengonversi kasus karakter dalam rentang ASCII seolah-olah lokalnya adalah "C".

Sumber: opennet.ru

Tambah komentar