
Seperti biasa setelah melakukan upgrade minor dari php 8.0 ke 8.1, php group kembali memberikan rilis informasi bahwa mereka sedang mengerjakan update php 8.2 yang nantinya akan memberikan update antara lain sebagai berikut (yang aku notice terbesar ya)
readonlytrue dan falseRandom barumysqli_execute_query function and mysqli::execute_query methodopenssl_cipher_key_length yang diperbaruierror_log_modeopenssl_cipher_key_lengthconst untuk traitNamun dari perubahan diatas, ada perubahan yang paling menonjol menurut gw berdasarkan pengalaman gw dalam develop sebuah software (backend) menggunakan php, yaitu Dynamic Property yang menjadi deprecated di versi baru ini, asumsinya kita tidak bisa lagi declare sebuah variabel yang berisi class lalu write property langsung, kaya dibawah ini deh
$var = new Member();
$var->name = "Yanuar";
Kalau masih maksa buat pake dynamic prop di php 8.2 bakal munculin output kaya dibawah ini, by default loh ya!
Deprecated: Creation of dynamic property Member::$name is deprecated in ... on line ...
Hal di atas berlaku juga untuk constructor milik class itu sendiri loh ya, kaya gini
class Member {
public function __construct() {
$this->name = 'test';
}
}
new Member();
Deprecated: Creation of dynamic property Member::$name is deprecated in ... on line ...
Ngeri kan? Bayangin seorang devOps atau kamu ngga sengaja upgrade pake package manager dari php 8.1 ke 8.2, apa ngga ambruk struktur kodinganmu tuh hahaha. Tapi tunggu sebentar, ada sesuatu yang mungkin bisa buat kamu agak bernafas lebih panjang, yaitu #[AllowDynamicProperties] yap allow dynamic properties, mungkin php core engineer ngga bakal semudah itu buat hilangin dynamic property dari semua sisi karena yaa udah mendarah daging ke developer PHP di dunia? mungkin? Cara aplikasinya simpel kok, tinggal declare / write line tersebut diatas pembuatan class kaya dibawah deh
#[AllowDynamicProperties]
class Member {
public function __construct() {
$this->name = 'test';
}
}
new Member();
Voila, bisa kaan? Ada cara lain sebetulnya yaitu menggunakan sesuatu yang belum mungkin deprecated yaitu stdClass, gimana caranya? Extend aja classnya pake stdClass, that's it. Buat artikel lebih lengkap bisa cek disini nih. Soo ya, makin kesini php makin banyak perubahan, hopefully bakal bersaing bahasa program lain yang lebih muda dan baru. Sekian dulu post gue kali ini, thanks ☕️