[{"data":1,"prerenderedAt":457},["ShallowReactive",2],{"i-mdi:github":3,"i-mdi:linkedin":8,"i-mdi:instagram":10,"blog-dynamic-properties-deprecated-di-php-8-2-mimpi-buruk":12,"i-solar:calendar-linear":451,"i-solar:arrow-left-linear":453,"i-solar:pen-2-linear":455},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cpath fill=\"currentColor\" d=\"M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"currentColor\" d=\"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93zM6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"currentColor\" d=\"M7.8 2h8.4C19.4 2 22 4.6 22 7.8v8.4a5.8 5.8 0 0 1-5.8 5.8H7.8C4.6 22 2 19.4 2 16.2V7.8A5.8 5.8 0 0 1 7.8 2m-.2 2A3.6 3.6 0 0 0 4 7.6v8.8C4 18.39 5.61 20 7.6 20h8.8a3.6 3.6 0 0 0 3.6-3.6V7.6C20 5.61 18.39 4 16.4 4zm9.65 1.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 17.25 8A1.25 1.25 0 0 1 16 6.75a1.25 1.25 0 0 1 1.25-1.25M12 7a5 5 0 0 1 5 5a5 5 0 0 1-5 5a5 5 0 0 1-5-5a5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3a3 3 0 0 0 3 3a3 3 0 0 0 3-3a3 3 0 0 0-3-3\"\u002F>",{"id":13,"title":14,"body":15,"date":441,"description":442,"extension":443,"image":444,"meta":445,"navigation":298,"path":446,"seo":447,"sitemap":448,"stem":449,"__hash__":450},"blog\u002Fblog\u002Fdynamic-properties-deprecated-di-php-8-2-mimpi-buruk.md","Dynamic Properties deprecated di PHP 8.2? Mimpi buruk?",{"type":16,"value":17,"toc":436},"minimark",[18,23,27,109,113,125,178,181,233,236,310,344,348,355,419,432],[19,20,22],"h2",{"id":21},"update","Update",[24,25,26],"p",{},"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)",[28,29,30,38,48,51,58,68,75,81,86,93,96],"ul",{},[31,32,33,34],"li",{},"Class ",[35,36,37],"code",{},"readonly",[31,39,40,41,44,45],{},"Union type baru ",[35,42,43],{},"true"," dan ",[35,46,47],{},"false",[31,49,50],{},"Dukungan redaksi nilai Parameter Sensitif",[31,52,53,54,57],{},"Extensi ",[35,55,56],{},"Random"," baru",[31,59,60,61,64,65],{},"MySQLi: New ",[35,62,63],{},"mysqli_execute_query"," function and ",[35,66,67],{},"mysqli::execute_query method",[31,69,70,71,74],{},"Fungsi ",[35,72,73],{},"openssl_cipher_key_length"," yang diperbarui",[31,76,77,78],{},"Pengaturan permission untuk ",[35,79,80],{},"error_log_mode",[31,82,83,84],{},"OpenSSL: Fungsi baru ",[35,85,73],{},[31,87,88,89,92],{},"Dukungan ",[35,90,91],{},"const"," untuk trait",[31,94,95],{},"Dynamic Property Deprecations",[31,97,98],{},[99,100,101,102],"em",{},"etc. Selengkapnya bisa dibaca ",[103,104,108],"a",{"href":105,"rel":106},"https:\u002F\u002Fphp.watch\u002Fversions\u002F8.2",[107],"nofollow","di sini",[19,110,112],{"id":111},"big-notes","Big Notes",[24,114,115,116,120,121,124],{},"Namun dari perubahan diatas, ada perubahan yang paling menonjol menurut gw berdasarkan pengalaman gw dalam develop sebuah software (backend) menggunakan php, yaitu ",[117,118,119],"strong",{},"Dynamic Property"," yang menjadi deprecated di versi baru ini, asumsinya kita tidak bisa lagi declare sebuah variabel yang berisi ",[35,122,123],{},"class"," lalu write property langsung, kaya dibawah ini deh",[126,127,132],"pre",{"className":128,"code":129,"language":130,"meta":131,"style":131},"language-php shiki shiki-themes github-light github-dark","$var = new Member();\n$var->name = \"Yanuar\";\n","php","",[35,133,134,157],{"__ignoreMap":131},[135,136,139,143,147,150,154],"span",{"class":137,"line":138},"line",1,[135,140,142],{"class":141},"sVt8B","$var ",[135,144,146],{"class":145},"szBVR","=",[135,148,149],{"class":145}," new",[135,151,153],{"class":152},"sj4cs"," Member",[135,155,156],{"class":141},"();\n",[135,158,160,163,166,169,171,175],{"class":137,"line":159},2,[135,161,162],{"class":141},"$var",[135,164,165],{"class":145},"->",[135,167,168],{"class":141},"name ",[135,170,146],{"class":145},[135,172,174],{"class":173},"sZZnC"," \"Yanuar\"",[135,176,177],{"class":141},";\n",[24,179,180],{},"Kalau masih maksa buat pake dynamic prop di php 8.2 bakal munculin output kaya dibawah ini, by default loh ya!",[126,182,186],{"className":183,"code":184,"language":185,"meta":131,"style":131},"language-shell shiki shiki-themes github-light github-dark","Deprecated: Creation of dynamic property Member::$name is deprecated in ... on line ...\n","shell",[35,187,188],{"__ignoreMap":131},[135,189,190,194,197,200,203,206,209,212,215,218,221,224,227,230],{"class":137,"line":138},[135,191,193],{"class":192},"sScJk","Deprecated:",[135,195,196],{"class":173}," Creation",[135,198,199],{"class":173}," of",[135,201,202],{"class":173}," dynamic",[135,204,205],{"class":173}," property",[135,207,208],{"class":173}," Member::",[135,210,211],{"class":141},"$name ",[135,213,214],{"class":173},"is",[135,216,217],{"class":173}," deprecated",[135,219,220],{"class":173}," in",[135,222,223],{"class":173}," ...",[135,225,226],{"class":173}," on",[135,228,229],{"class":173}," line",[135,231,232],{"class":173}," ...\n",[24,234,235],{},"Hal di atas berlaku juga untuk constructor milik class itu sendiri loh ya, kaya gini",[126,237,239],{"className":128,"code":238,"language":130,"meta":131,"style":131},"class Member {\n    public function __construct() {\n        $this->name = 'test';\n    }\n}\n\nnew Member();\n",[35,240,241,250,264,281,287,293,300],{"__ignoreMap":131},[135,242,243,245,247],{"class":137,"line":138},[135,244,123],{"class":145},[135,246,153],{"class":192},[135,248,249],{"class":141}," {\n",[135,251,252,255,258,261],{"class":137,"line":159},[135,253,254],{"class":145},"    public",[135,256,257],{"class":145}," function",[135,259,260],{"class":152}," __construct",[135,262,263],{"class":141},"() {\n",[135,265,267,270,272,274,276,279],{"class":137,"line":266},3,[135,268,269],{"class":152},"        $this",[135,271,165],{"class":145},[135,273,168],{"class":141},[135,275,146],{"class":145},[135,277,278],{"class":173}," 'test'",[135,280,177],{"class":141},[135,282,284],{"class":137,"line":283},4,[135,285,286],{"class":141},"    }\n",[135,288,290],{"class":137,"line":289},5,[135,291,292],{"class":141},"}\n",[135,294,296],{"class":137,"line":295},6,[135,297,299],{"emptyLinePlaceholder":298},true,"\n",[135,301,303,306,308],{"class":137,"line":302},7,[135,304,305],{"class":145},"new",[135,307,153],{"class":152},[135,309,156],{"class":141},[126,311,312],{"className":183,"code":184,"language":185,"meta":131,"style":131},[35,313,314],{"__ignoreMap":131},[135,315,316,318,320,322,324,326,328,330,332,334,336,338,340,342],{"class":137,"line":138},[135,317,193],{"class":192},[135,319,196],{"class":173},[135,321,199],{"class":173},[135,323,202],{"class":173},[135,325,205],{"class":173},[135,327,208],{"class":173},[135,329,211],{"class":141},[135,331,214],{"class":173},[135,333,217],{"class":173},[135,335,220],{"class":173},[135,337,223],{"class":173},[135,339,226],{"class":173},[135,341,229],{"class":173},[135,343,232],{"class":173},[19,345,347],{"id":346},"solutions","Solutions",[24,349,350,351,354],{},"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 ",[35,352,353],{},"#[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 \u002F write line tersebut diatas pembuatan class kaya dibawah deh",[126,356,358],{"className":128,"code":357,"language":130,"meta":131,"style":131}," #[AllowDynamicProperties]\nclass Member {\n    public function __construct() {\n        $this->name = 'test';\n    }\n}\nnew Member();\n",[35,359,360,371,379,389,403,407,411],{"__ignoreMap":131},[135,361,362,365,368],{"class":137,"line":138},[135,363,364],{"class":141}," #[",[135,366,367],{"class":152},"AllowDynamicProperties",[135,369,370],{"class":141},"]\n",[135,372,373,375,377],{"class":137,"line":159},[135,374,123],{"class":145},[135,376,153],{"class":192},[135,378,249],{"class":141},[135,380,381,383,385,387],{"class":137,"line":266},[135,382,254],{"class":145},[135,384,257],{"class":145},[135,386,260],{"class":152},[135,388,263],{"class":141},[135,390,391,393,395,397,399,401],{"class":137,"line":283},[135,392,269],{"class":152},[135,394,165],{"class":145},[135,396,168],{"class":141},[135,398,146],{"class":145},[135,400,278],{"class":173},[135,402,177],{"class":141},[135,404,405],{"class":137,"line":289},[135,406,286],{"class":141},[135,408,409],{"class":137,"line":295},[135,410,292],{"class":141},[135,412,413,415,417],{"class":137,"line":302},[135,414,305],{"class":145},[135,416,153],{"class":152},[135,418,156],{"class":141},[24,420,421,422,425,426,431],{},"Voila, bisa kaan? Ada cara lain sebetulnya yaitu menggunakan sesuatu yang belum mungkin deprecated yaitu ",[35,423,424],{},"stdClass",", gimana caranya? Extend aja classnya pake stdClass, that's it. Buat artikel lebih lengkap bisa cek ",[103,427,430],{"href":428,"rel":429},"https:\u002F\u002Fphp.watch\u002Fversions\u002F8.2\u002Fdynamic-properties-deprecated",[107],"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 ☕️",[433,434,435],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":131,"searchDepth":159,"depth":159,"links":437},[438,439,440],{"id":21,"depth":159,"text":22},{"id":111,"depth":159,"text":112},{"id":346,"depth":159,"text":347},"2022-11-28","Di PHP versi 8.2 terdapat update yang dianggap para developer php seperti gw kaget, yap dynamic property menjadi deprecated by default, Lho kok bisa?","md","\u002Fimages\u002Fblog\u002Fdynamic-prop.png",{},"\u002Fblog\u002Fdynamic-properties-deprecated-di-php-8-2-mimpi-buruk",{"title":14,"description":442},{"loc":446},"blog\u002Fdynamic-properties-deprecated-di-php-8-2-mimpi-buruk","ksm40ETFIKcYsqwVGGpP-oWS3uXw38PZvKxhRet-TaU",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":452},"\u003Cg fill=\"none\">\u003Cpath stroke=\"currentColor\" stroke-width=\"1.5\" d=\"M2 12c0-3.771 0-5.657 1.172-6.828S6.229 4 10 4h4c3.771 0 5.657 0 6.828 1.172S22 8.229 22 12v2c0 3.771 0 5.657-1.172 6.828S17.771 22 14 22h-4c-3.771 0-5.657 0-6.828-1.172S2 17.771 2 14z\"\u002F>\u003Cpath stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"1.5\" d=\"M7 4V2.5M17 4V2.5M2.5 9h19\"\u002F>\u003Cpath fill=\"currentColor\" d=\"M18 17a1 1 0 1 1-2 0a1 1 0 0 1 2 0m0-4a1 1 0 1 1-2 0a1 1 0 0 1 2 0m-5 4a1 1 0 1 1-2 0a1 1 0 0 1 2 0m0-4a1 1 0 1 1-2 0a1 1 0 0 1 2 0m-5 4a1 1 0 1 1-2 0a1 1 0 0 1 2 0m0-4a1 1 0 1 1-2 0a1 1 0 0 1 2 0\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":454},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" d=\"M20 12H4m0 0l6-6m-6 6l6 6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":456},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\u003Cpath stroke-linecap=\"round\" d=\"M4 22h16\"\u002F>\u003Cpath d=\"m13.888 3.663l.742-.742a3.146 3.146 0 1 1 4.449 4.45l-.742.74m-4.449-4.448s.093 1.576 1.483 2.966s2.966 1.483 2.966 1.483m-4.449-4.45L7.071 10.48c-.462.462-.693.692-.891.947a5.2 5.2 0 0 0-.599.969c-.139.291-.242.601-.449 1.22l-.875 2.626m14.08-8.13l-6.817 6.817c-.462.462-.692.692-.947.891q-.451.352-.969.599c-.291.139-.601.242-1.22.448l-2.626.876m0 0l-.641.213a.848.848 0 0 1-1.073-1.073l.213-.641m1.501 1.5l-1.5-1.5\"\u002F>\u003C\u002Fg>",1779378197959]