Upgrade to Pro — share decks privately, control downloads, hide ads and more …

stdClassって一体何者なんだ?!/Who the hell is stdClass?

stdClassって一体何者なんだ?!/Who the hell is stdClass?

3/24 PHPer Kaigi 2023 Day1 LT

寺西帝乃

March 24, 2023
Tweet

Other Decks in Technology

Transcript

  1. ʁ
    גࣜձࣾϥΫε
    ࣉ੢ ఇ೫
    stdClassって⼀体何者なんだ︖︕

    View full-size slide

  2. ⾃⼰紹介
    ࣉ੢ ఇ೫ (ͯΒʹ͠ ͍ͩͳ)
    • גࣜձࣾϥΫε
    • νϟοτσΟʔϥʔ։ൃ՝
    • ໊લͷ༝དྷ͸๭΢ϧτϥϚϯ
    ܦྺ
    • େࡕߴઐˠେֶਐֶ (2022ଔ)
    • ΤϯδχΞྺ 11Χ݄
    • PHPྺ 8Χ݄

    View full-size slide

  3. こんなことをお話しします︕
    こんな⽅にオススメ︕
    ✓ TUE$MBTT͕Α͘Θ͔Βͳ͍ॳ৺ऀ1)1FS
    ✓ ࠓ·ͰͳΜͱͳ͘࢖͖ͬͯͨதݎ1)1FS
    ✓ ࠓޙTUE$MBTTΛม͑ͯ͘ΕΔϕςϥϯ1)1FS
    TUE$MBTTͷੜ੒ํ๏
    TUE$MBTTʹͰ͖Δ͜ͱɾͰ͖ͳ͍͜ͱ
    TUE$MBTTʹؔ͢Δٞ࿦
    ͱ͋Δ։ൃऀͷߟ͑

    View full-size slide

  4. 1. stdClassの⽣成⽅法
    ✓ OFXԋࢉࢠΛ࢖ͬͨΠϯελϯεԽ
    ✓ ΦϒδΣΫτܕ΁ͷஔ׵
    ✓ ͍ΖΜͳؔ਺ͷฦΓ஋ͱͯ͠औಘ

    View full-size slide

  5. 2. stdClassにできること・できないこと
    連想配列みたいに値を格納できるよ︕

    View full-size slide

  6. 連想配列みたいに値を格納できるよ︕
    2. stdClassにできること・できないこと
    似たことができるのに配列と


    書き⽅が異なるからややこしいね

    View full-size slide

  7. 2. stdClassにできること・できないこと
    配列みたいにforeach⽂で回せるよ︕

    View full-size slide

  8. 2. stdClassにできること・できないこと
    配列型みたいにforeach⽂で回せるよ︕
    配列の関数は使えないけどね・・・


    ex) array_map, array_filer, array_merge,
    count, …

    View full-size slide

  9. 2. stdClassにできること・できないこと
    stdClassを継承したら動的プロパティを使えるよ︕

    View full-size slide

  10. stdClassを継承したら動的プロパティを使えるよ︕
    2. stdClassにできること・できないこと
    意図しないプロパティが⽣成されても


    検知できないけどね。


    PHP8.2で議論になってたのに・・・

    View full-size slide

  11. ごめん、君苦⼿かも。
    2. stdClassにできること・できないこと
    結局stdClassって
    何者なん︖︖

    View full-size slide

  12. 3. stdClassに関する議論
    .BLJOHTUE$MBTTJUFSBCMF
    ✓TUE$MBTT͸5SBWFSTBCMFΠϯλʔϑΣʔεΛ࣮૷͢Δ
    ✓TUE$MBTTΛ഑ྻͱಉ͡ѻ͍ʹ͢Δ
    ൓Ԡ
    ✓TUE$MBTT͕഑ྻͷΑ͏ͳ࢖ΘΕํΛ͍ͯ͠Δ͸ೝ͍ࣝͯ͠Δ
    ✓ؔ਺ʹ഑ྻΛฦ͢Α͏ཁٻ͢Ε͹ྑ͍
    ✓TUE$MBTTͷҙຯΛ௒͑ͨ໾ׂΛ࣋ͨͤΔͷ͸ࢍಉͰ͖ͳ͍

    View full-size slide

  13. 3. stdClassに関する議論
    "MJBTTUE$MBTTUP%ZOBNJD0CKFDU
    ✓%ZOBNJD0CKFDUͱ͍͏ΤΠϦΞεΛ௥Ճ͢Δ
    ✓TUE$MBTTͷ໊લͱ໾ׂʹဃ཭͕͋Δ͔Β
    ൓Ԡ
    ✓ଟ͘ͷࢍಉΛಘ͍ͯͨ
    ✓͔͠͠طଘίʔυɺςετίʔυ΁ͷӨڹ͕޿ൣғ
    ✓ӨڹͷׂʹϝϦοτ͕গͳ͍

    View full-size slide

  14. 4. とある開発者の考え
    Nikita Popov

    View full-size slide

  15. 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

    View full-size slide

  16. 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΋ഇࢭʹ͔ͨͬͨ͠΍Ζ͏ͳʣ

    View full-size slide

  17. まとめ
    TUE$MBTTͬͯҰମԿऀͳΜͩʁʂ
    ✓1)1Ҏ߱Ͱ΋ಈతϓϩύςΟ͕࢖͑ΔۭͷΫϥε
    ✓ϨΨγʔίʔυͰ͸഑ྻͷΑ͏ͳ࢖ΘΕํΛ͍ͯ͠Δ
    TUE$MBTTͷཱͪҐஔ
    ✓ྑ͘͸ࢥ͍ͬͯͳ͍։ൃऀ͕Ұఆ਺ଘࡏ͢Δ
    ✓ͨͩ͠޿͘࢖ΘΕ͍ͯΔͨΊɺͳ͔ͳ͔มߋͰ͖ͳ͍
    ✓ࠓޙTUE$MBTT͕ྑ͍ѻ͍Λͯ͠΋Β͑Δ͜ͱΛئ͏

    View full-size slide