3/24 PHPer Kaigi 2023 Day1 LT
ʁגࣜձࣾϥΫεࣉ ఇ೫stdClassって⼀体何者なんだ︖︕
View Slide
⾃⼰紹介ࣉ ఇ೫ (ͯΒʹ͠ ͍ͩͳ)• גࣜձࣾϥΫε• νϟοτσΟʔϥʔ։ൃ՝• ໊લͷ༝དྷϧτϥϚϯܦྺ• େࡕߴઐˠେֶਐֶ (2022ଔ)• ΤϯδχΞྺ 11Χ݄• PHPྺ 8Χ݄
こんなことをお話しします︕こんな⽅にオススメ︕✓ TUE$MBTT͕Α͘Θ͔Βͳ͍ॳ৺ऀ1)1FS✓ ࠓ·ͰͳΜͱͳ͖ͬͯͨ͘தݎ1)1FS✓ ࠓޙTUE$MBTTΛม͑ͯ͘ΕΔϕςϥϯ1)1FS TUE$MBTTͷੜํ๏ TUE$MBTTʹͰ͖Δ͜ͱɾͰ͖ͳ͍͜ͱ TUE$MBTTʹؔ͢Δٞ ͱ͋Δ։ൃऀͷߟ͑
1. stdClassの⽣成⽅法✓ OFXԋࢉࢠΛͬͨΠϯελϯεԽ✓ ΦϒδΣΫτܕͷஔ✓ ͍ΖΜͳؔͷฦΓͱͯ͠औಘ
2. stdClassにできること・できないこと連想配列みたいに値を格納できるよ︕
連想配列みたいに値を格納できるよ︕2. stdClassにできること・できないこと似たことができるのに配列と書き⽅が異なるからややこしいね
2. stdClassにできること・できないこと配列みたいにforeach⽂で回せるよ︕
2. stdClassにできること・できないこと配列型みたいにforeach⽂で回せるよ︕配列の関数は使えないけどね・・・ex) array_map, array_filer, array_merge,count, …
2. stdClassにできること・できないことstdClassを継承したら動的プロパティを使えるよ︕
stdClassを継承したら動的プロパティを使えるよ︕2. stdClassにできること・できないこと意図しないプロパティが⽣成されても検知できないけどね。PHP8.2で議論になってたのに・・・
ごめん、君苦⼿かも。2. stdClassにできること・できないこと結局stdClassって何者なん︖︖
3. stdClassに関する議論.BLJOHTUE$MBTTJUFSBCMF✓TUE$MBTT5SBWFSTBCMFΠϯλʔϑΣʔεΛ࣮͢Δ✓TUE$MBTTΛྻͱಉ͡ѻ͍ʹ͢ΔԠ✓TUE$MBTT͕ྻͷΑ͏ͳΘΕํΛ͍ͯ͠Δೝ͍ࣝͯ͠Δ✓ؔʹྻΛฦ͢Α͏ཁٻ͢Εྑ͍✓TUE$MBTTͷҙຯΛׂ͑ͨΛ࣋ͨͤΔͷࢍಉͰ͖ͳ͍
3. stdClassに関する議論"MJBTTUE$MBTTUP%ZOBNJD0CKFDU ✓%ZOBNJD0CKFDUͱ͍͏ΤΠϦΞεΛՃ͢Δ✓TUE$MBTTͷ໊લͱׂʹဃ͕͋Δ͔ΒԠ✓ଟ͘ͷࢍಉΛಘ͍ͯͨ✓͔͠͠طଘίʔυɺςετίʔυͷӨڹ͕ൣғ✓ӨڹͷׂʹϝϦοτ͕গͳ͍
4. とある開発者の考えNikita Popov
4. とある開発者の考えMind you, stdClass is an anti-pattern.Instead of stdClass you should just be using an array.We should never have added stdClass.Nikita Popov
4. とある開発者の考えMind you, stdClass is an anti-pattern.Instead of stdClass you should just be using an array.We should never have added stdClass.Nikita PopovʢಈతϓϩύςΟͱಉ͡Α͏ʹTUE$MBTTഇࢭʹ͔ͨͬͨ͠Ζ͏ͳʣ
まとめTUE$MBTTͬͯҰମԿऀͳΜͩʁʂ✓1)1Ҏ߱ͰಈతϓϩύςΟ͕͑ΔۭͷΫϥε✓ϨΨγʔίʔυͰྻͷΑ͏ͳΘΕํΛ͍ͯ͠ΔTUE$MBTTͷཱͪҐஔ✓ྑ͘ࢥ͍ͬͯͳ͍։ൃऀ͕Ұఆଘࡏ͢Δ✓ͨͩ͘͠ΘΕ͍ͯΔͨΊɺͳ͔ͳ͔มߋͰ͖ͳ͍✓ࠓޙTUE$MBTT͕ྑ͍ѻ͍Λͯ͠Β͑Δ͜ͱΛئ͏