Mari Kita Intip Fitur Fitur PHP 8.2 Versi Terbaru Di Tahun 2022 - CRUDPRO

Mari Kita Intip Fitur Fitur PHP 8.2 Versi Terbaru Di Tahun 2022

Mari Kita Intip Fitur Fitur PHP 8.2 Versi Terbaru Di Tahun 2022

PHP 8.2 sudah dekat. Rencananya akan dikeluarkan pada 8 Desember.

PHP 8.2 murni diperuntukkan untuk membuat hidup pengembang lebih simpel. Sejumlah besar perubahan sederhanakan proses pengkodean dan hilangkan fungsi-fungsi lama. Selalu disarankan untuk tingkatkan ke versi PHP terkini untuk mengoptimalkan keamanan situs Anda dan melatih diri dengan sintaks baru.

Mari kita lihat semua perubahan yang dibawa PHP 8.2 ke tabel hingga Anda bisa putuskan apakah perlu beralih saat versi baru pada akhirnya keluar.

Fitur Baru PHP 8.2

Pada bagian ini, kita akan mengulas perubahan dan fitur baru yang dikenalkan dengan PHP 8.2.

Kelas readonly baru

Property kelas readonly baru di-launching dengan versi 8.1. PHP 8.2 tingkatkannya lebih lanjut. Saat ini, Anda bisa memberitahukan semua kelas sebagai hanya bisa dibaca. Lakukan hal tersebut akan mengganti semua property kelas itu menjadi hanya bisa dibaca. Ini tidak berperan untuk property dinamis - mendeklarasikannya sebagai readonly akan menghasilkan kekeliruan.

Memberitahukan kelas dahulu terlihat seperti berikut:

class ReadOnlyClass
{
public readonly int $number,
public readonly int $anotherNumber
}

Dengan PHP 8.2, prosesnya sudah disederhanakan secara detail:

class ReadOnlyClass
{
public int $number,
public int $anotherNumber
}

Harus diingat bahwa mustahil mendeklarasikan fitur PHP berikut ini:

  • Enums – karena mereka tidak dapat mengandung properti sama sekali.
  • Traits.
  • Interfaces.

Izinkan true, null, dan false sebagai Jenis Mandiri

Dengan PHP 8.0, pengguna diberi support untuk Union Types. Anda bisa mendeklarasikan satu type sebagai kombinasi dari 2 type atau lebih. Walaupun Anda bisa memakai false dan null sebagai type yang memungkinkan, menggunakannya sebagai type yang berdiri dengan sendiri tidak diperbolehkan.

Dengan PHP 8.2, bisa saja untuk menggunakan false dan null sebagai type mandiri. Plus tambahan ini, sistem type PHP semakin lebih preskriptif karena Anda segera dapat mendeklarasikan type pengembalian, parameter, dan property lebih tepat.

Support Nilai Parameter Sensitif Redact

PHP memungkinkannya pengguna untuk mencari tumpukan panggilan di tiap titik program. Ini sangatlah membantu bila Anda ingin men-debug program dan melihat mengapa itu tidak berhasil. Tetapi, beberapa pencarian tumpukan berisi info sensitif yang kemungkinan ingin Anda sembunyikan.

PHP 8.2 akan menambah atribut baru yang disebut SensitiveParameter. Ini menahan info sensitif ditampilkan atau dicatat setiap program mengalami permasalahan. Dalam prakteknya, ini akan terlihat seperti berikut:

function passwords(
$publicpassword,
#[\SensitiveParameter] $secretpassword
) {
throw new \Exception('Error');
}
passwords('publicpassword', 'secretpassword');

New mysqli_execute_query Function and mysqli::execute_query Method

PHP 8.2 mengenalkan langkah yang lebih mudah untuk tangani kueri MySQLi berparameter. Dengan fungsi mysqli_execute_query($sql, $params) dan sistem mysqli::execute_query, Anda bisa menyiapkan, mengikat, dan menyelesaikan kueri dalam fungsi yang serupa. Setelah sukses jalankan kueri, Anda akan disediakan dengan object mysqli_result.

Fungsi yang diusulkan RFC terlihat seperti berikut:

foreach ($db->execute_query('SELECT * FROM user WHERE name LIKE ? AND type_id IN (?, ?)', [$name, $type1, $type2]) as $row) {
print_r($row);
}

Izinkan Konstanta dalam Sifat

Dengan PHP 8.2, Anda bisa mendeklarasikan konstanta dalam karakter. Sampai saat ini, karakter memungkinkan pemakai untuk menggunakan kembali code dengan mendeskripsikan sistem dan property. Saat ini bisa saja untuk mendeklarasikan konstanta dalam karakter juga.

Berikut adalah contoh proposal RFC resmi:

trait Foo {
public const FLAG_1 = 1;
protected const FLAG_2 = 2;
private const FLAG_3 = 2;
public function doFoo(int $flags): void {
if ($flags & self::FLAG_1) {
echo 'Got flag 1';
}
if ($flags & self::FLAG_2) {
echo 'Got flag 2';
}
if ($flags & self::FLAG_3) {
echo 'Got flag 3';
}
}
}

Jenis Bentuk Normal Disjungtif Baru (DNF).

Dengan PHP 8.2, Anda akan dapat memakai fitur type Disjunctive Normal Form (DNF) yang baru. Ini merupakan langkah standard mengatur gestur boolean. Tepatnya, itu terbagi dalam disjungsi konjungsi atau hanya boolean OR dari AND.

Contoh proposal RFC dapat ditemukan berikut di bawah ini:

// Accepts an object that implements both A and B,
// OR an object that implements D.
(A&B)|D
// Accepts an object that implements C,
// OR a child of X that also implements D,
// OR null.
C|(X&D)|null
// Accepts an object that implements all three of A, B, and D,
// OR an int,
// OR null.
(A&B&D)|int|null

Atribut AllowDynamicProperties

PHP 8.2 akan hilangkan variabel aktif di kelas. Ini akan menghasilkan pesan pemberhentian di PHP 8.2 dan ErrorException di versi PHP mendatang.

Untuk alasan ini, atribut #[AllowDynamicProperties] akan ditambahkan ke PHP 8.2 untuk memungkinkan property aktif untuk kelas. Contoh RFC terlihat seperti ini:

class Foo {}
$foo = new Foo;
// Deprecated: Creation of dynamic property Foo::$bar is deprecated
$foo->bar = 1;
// No deprecation warning: Dynamic property already exists.
$foo->bar = 2;

Fitur yang Tidak Digunakan Lagi di PHP 8.2

Di bagian ini, kita akan melihat semua fitur yang tidak akan digunakan lagi di PHP 8.2.

#utf8_encode() and utf8_decode() Functions

Peranan utf8_encode() dan utf8_decode() digunakan untuk mengonversi antara standard pengkodean ISO-8859-1 dan UTF-8. Karena minimnya pesan kesalahan, peringatan, dan dukungan penyandian yang terbatas, PHP 8.2 akan menghentikan fungsi ini sementara PHP 9.0 akan mengecualikannya seutuhnya. Sebagai alternative, pengguna bisa menggunakan perpanjangan iconv atau intl untuk mengonversi standard penyandian.

Mbstring: Pengodean Entitas Base64, Uuencode, QPrint, dan HTML

Mbstring dipakai untuk mengkonversi ke dan dari beberapa standard pengkodean karakter seperti UTF-8/16/32 dan ISO-8859-1. Ini meliputi support untuk Entitas Base64, Quoted-Printable, Uuencode, dan HTML.

Tetapi, format ini memproses info dalam byte mentah, bukan urutan byte. Perlu dicatat jika PHP telah memiliki peranan terpisah untuk menyandikan/mendekodekan format ini. Dengan begitu, PHP 8.2 akan menghentikan perpanjangan mbstring dengan pengkodean memiliki label berikut ini:

  • BASE64
  • UUENCODE
  • HTML-ENTITIES
  • html (alias of HTML-ENTITIES)
  • Quoted-Printable
  • qprint (alias of Quoted-Printable)

Callable yang Didukung Sebagian

PHP 8.2 akan menghentikan callable yang didukung sebagian yang tidak bekerja dengan pola $callable(). Daftar callable yang tidak dipakai kembali bisa diketemukan di bawah:

$callable = "self::method"; $callable = "parent::method"; $callable = "static::method"; $callable = ["self", "method"]; $callable = ["parent", "method"]; $callable = ["static", "method"]; $callable = ["MyClass", "MyParentClass::myMethod"]; $callable = [new MyClass(), "MyOtherClass::myMethod"];

Untuk menghindari pesan pemberhentian, pengguna bisa mengonversi semua kata kunci mandiri, induk, dan statis ke nama kelas yang tepat.

${var} Interpolasi String

PHP memungkinkan pengguna untuk menukar nilai variabel dalam string literal dengan tanda kutip double, seperti pada contoh berikut ini:

  • "$myname" - langsung menyematkan variabel.
  • "{$myname}" - tanda kurung di luar variabel.
  • "${myname}" - tanda kurung setelah tanda dolar.
  • " ${expr}" - variabel variabel sama dengan menggunakan (string) ${expr}

Meskipun menjajakan fungsionalitas yang serupa, sintaks dari 2 pilihan paling akhir cukup sulit. Itu sebabnya mereka akan ditinggalkan di PHP 8.2. Anda masih bisa menggunakan dua pilihan pertama tanpa permasalahan.

Perubahan PHP 8.2 Lainnya

Kenaikan Ekstensi Random

PHP menawarkan beberapa fungsi untuk pembuatan angka random. Dengan PHP 8.2, beberapa di antaranya akan dipindah ke ekstensi random baru. Perpanjangan ini akan disertakan dalam PHP secara default, dan tidak ada pilihan untuk menonaktifkannya.

Berikut daftar semua fungsi dan konstanta yang akan dipindahkan ke ekstensi random. Harus diingat jika mereka tetap ada di namespace global.

  • random_bytes function
  • random_int function
  • rand function
  • getrandmax function
  • srand function
  • lcg_value function
  • mt_rand function
  • mt_getrandmax function
  • mt_srand function
  • MT_RAND_PHP constant
  • MT_RAND_MT19937 constant

MySQLi Tidak Lagi Mendukung libmysql

Secara bersejarah PHP memberikan dukungan dua perpustakaan untuk menyambungkan database MySQL: mysqlnd dan libmysql. Sejak PHP 5.4, perpustakaan yang direferensikan secara standar ialah mysqlnd. Untuk sederhanakan pengujian code PHP, ditetapkan untuk hapus libmysql dengan PHP 8.2.

Mulai saat ini, Anda harus menggunakan pustaka mysqlnd untuk menyambungkan database MySQL.

Urutkan Perubahan Urutan untuk Fungsi ksort

Fungsi ksort mengurutkan array dengan kunci dalam posisi menaik. PHP 8.2 akan mengenalkan pembaruan bug untuk membuat keluaran parameter SORT_REGULAR konsisten dengan parameter yang lain. Sampai PHP 8.2, ini memprioritaskan tombol abjad sebelum tombol angka.

Saat ini, ksort akan menempatkan kunci numerik saat sebelum kunci abjad saat menyortir. Dalam prakteknya, kunci yang diurutkan akan terlihat seperti berikut:

["1" => '', "2" => '', "a" => '', , "b" => ''];

Menggantikan :

["a" => '', "b" => '', "1" => '', , "2" => ''];

Fungsi str_split Mengembalikan Array Kosong untuk String Kosong

Pembaruan bug yang lain ditujukan untuk fungsi str_split. Ini dipakai untuk membagi string menjadi array.

Sampai PHP 8.2, bila fungsi ini dikasih string kosong, ia akan mengembalikan string kosong. PHP 8.2 mengenalkan pembaruan untuk bug ini, dan str_split akan mengembalikan array kosong bila diberi string kosong.

Langkah Mengganti Versi PHP

Umumnya, penyuplai hosting menawarkan langkah mudah untuk berpindah antara versi PHP. Bila Anda menggunakan hPanel Hostinger, yang perlu Anda lakukan hanya memilih paket hosting Anda dan cari Konfigurasi PHP:

Mari Kita Intip Fitur Fitur PHP 8.2 Versi Terbaru Di Tahun 2022

Di sini, Anda akan menemukan semua versi PHP terbaru yang stabil. Pilih versi yang disukai dan tekan Perbarui untuk menyimpan perubahan.

Mari Kita Intip Fitur Fitur PHP 8.2 Versi Terbaru Di Tahun 2022

Di dalam utilitas ini, Anda juga dapat mengelola ekstensi PHP dan opsi PHP untuk semua versi satu per satu.

Kesimpulan

PHP 8.2 menawarkan banyak perbaikan dari versi sebelumnya. Ini memperkenalkan sejumlah fitur baru seperti kelas readonly baru, menghentikan beberapa implementasi usang dengan sintaksis kompleks, dan memperbaiki bug penting untuk merampingkan alur kerja pengembangan dan membuat penggunaan PHP lebih mudah.

Kami harap posting ini membantu Anda mempersiapkan peluncuran PHP 8.2 mendatang. Kami sangat menantikan rilis lengkap versi baru pada tanggal 8 Desember!

Terimakasih telah membaca artikel ini, semoga dapat bermanfaat.