Pengujian beta PHP 8 telah dimulai

Disampaikan oleh rilis beta pertama dari cabang baru bahasa pemrograman PHP 8. Rilisnya dijadwalkan pada 26 November. Pada saat yang sama, rilis korektif PHP 7.4.9, 7.3.21 dan
7.2.33, yang menghilangkan akumulasi kesalahan dan kerentanan.

Utama inovasi PHP8:

  • Mengaktifkan Kompiler JIT, yang penggunaannya akan meningkatkan produktivitas.
  • Dukungan argumen fungsi bernama, memungkinkan Anda meneruskan nilai ke fungsi sehubungan dengan nama, mis. Anda dapat meneruskan argumen dalam urutan apa pun dan menentukan argumen opsional. Misalnya, "array_fill(start_index: 0, angka: 100, nilai: 50)".
  • Saat memanggil metode diizinkan menggunakan operator “?”, yang memungkinkan Anda memulai panggilan hanya jika metode tersebut ada, sehingga menghindari pemeriksaan yang tidak perlu untuk mengembalikan nilai “null”. Misalnya, "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
  • Dukungan tipe serikat pekerja, mendefinisikan koleksi dari dua tipe atau lebih (misalnya, “public function foo(Foo|Bar $input): int|float;”).
  • Dukungan atribut (anotasi) yang memungkinkan Anda mengikat metadata (seperti informasi tipe) ke kelas tanpa menggunakan sintaksis Docblock.
  • Dukungan ekspresi pertandingan, yang, tidak seperti switch, dapat mengembalikan nilai, mendukung kondisi penggabungan, menggunakan perbandingan tipe yang ketat, dan tidak memerlukan spesifikasi "break".

    $hasil = cocok($masukan) {
    0 => "halo",
    '1', '2', '3' => “dunia”,
    };

  • Sintaks yang dipersingkat definisi kelas, memungkinkan Anda menggabungkan definisi konstruktor dan properti.
  • Jenis pengembalian baru - statis.
  • Tipe baru - campur aduk, yang dapat digunakan untuk menentukan apakah suatu fungsi menerima parameter dari tipe yang berbeda.
  • Ekspresi melemparkan untuk menangani pengecualian.
  • Peta Lemah untuk membuat objek yang dapat dikorbankan selama pengumpulan sampah (misalnya, untuk menyimpan cache yang tidak diperlukan).
  • Kesempatan menggunakan ekspresi “::class” untuk objek (analog dengan memanggil get_class()).
  • Kesempatan definisi di blok tangkapan pengecualian yang tidak terikat pada variabel.
  • Kesempatan meninggalkan koma setelah elemen terakhir dalam daftar parameter fungsi.
  • Antarmuka baru Dapat dirangkai untuk mengidentifikasi tipe string atau data apa pun yang dapat dikonversi menjadi string (yang tersedia metode __toString()).
  • Fitur baru str_berisi(), analog strpos yang disederhanakan untuk menentukan kemunculan substring, serta fungsi str_starts_with() dan str_ends_with() untuk memeriksa kecocokan di awal dan akhir string.
  • Fitur tambahan fdiv(), yang melakukan operasi pembagian tanpa menimbulkan kesalahan saat membagi dengan nol.
  • Catatan logika penggabungan string. Misalnya, ungkapan 'echo "sum:" . $a + $b' sebelumnya diartikan sebagai 'echo ("sum: " . $a) + $b', dan di PHP 8 akan diperlakukan sebagai 'echo "sum: " . ($a + $b)'.
  • Diperketat memeriksa operasi aritmatika dan bit, misalnya ekspresi "[] % [42]" dan "$object + 4" akan menghasilkan kesalahan.
  • Diimplementasikan algoritma pengurutan yang stabil di mana urutan nilai yang identik dipertahankan di berbagai proses.
  • Sumber: opennet.ru

Tambah komentar