懇親会 LT @ PHP カンファレンス 2023
※このスライドは懇親会 LT 用のネタであり「本当の FizzBuzz」なんてものは実在しません
ΊΓʔຊͷ FizzBuzz Λ͓ݟͤ͠·࠙͢ձ LT @PHP ΧϯϑΝϨϯε 2023
View Slide
ΊΓʔm3m0r7͖ͬ͞ RubyVM Λ PHP Ͱ࣮͢ΔΛ͠·ͨ͠memory1994m3m0r7
FizzBuzz ͬͯΔਓʙʁ
૾ͨ͠ਓ ͍ΔΜ͡Όͳ͍Ͱ͠ΐ͏͔
FizzBuzz ͰϧʔϓจΛ ͏ͷ͑
ຊͷ FizzBuzz ΛݟͤͯΓ·͢Α
͜ΕɼͪΌΜͱ 1 ʙ 100 ·ͰͷFizzBuzz ͕ग़ྗ͞Ε·͢
Ͳ͏ಈ͍͍ͯΔͱࢥ͍·͔͢ʁ
PHP $$var ͱ࣮ߦ͢Δͱ $var ʹ ೖ͍ͬͯΔΛม໊ͱͯ͠ࢀর͠·͢
ͨͱ͑ $var = 'cat' ͱ͢Δͱ $$var $cat Λ࣮ߦ͠Α͏ͱ͠·͢ɻ
ͭ·Γɼ$$$...$ ͦΕΛ ͻͨ͢Β܁Γฦ͍ͯ͠Δ͜ͱʹͳΓ·͢ɻ
$var = '1' Λ $$var ͱ͢Δͱ $1 Λ ࢀর͠Α͏ͱ͠·͕͢
͝ଘͷ௨Γ PHP Ͱ ม໊Λࣈ͔Β࢝ΊΒΕ·ͤΜ
͔͠͠ $GLOBALS['1'] ͷΑ͏ʹ ࢀর͢Δ͜ͱͰ͖·͢
PHP ϩʔΧϧมͱάϩʔόϧมͰ͋Δ $GLOBALS Λࢀর͠Α͏ͱ͠·͢
͜ͷΑ͏ʹ͢Δ͜ͱͰ $var = '1' Λ$$var ͱ࣮ߦ͢Δͱ $GLOBALS['1'] ͕ ࢀর͞Ε·͢
͔͠͠ $GLOBALS['1'] ηοτ͞Ε͍ͯͳ͍ͷͰɼ͜ͷ··ͰUndefined variable ʹͳΓ·͢
࣮ $var = '1' Λ $$var ͱ࣮ߦ͢Δͱ͖Undefined variable ͕ग़ྗ͞ΕΔલʹ จࣈྻม͕Γ·͢
ͭ·Γ class Ͱఆٛ͞Εͨ __toString ͕ൃՐ͢ΔͷͰ͢
͜ͷੑ࣭Λར༻ͯ͠ɼ__toString ͷ λΠϛϯάͰ $GLOBALS['1'] ʢ1 ҙͷࣈʣΛఆ͍ٛͯ͠·͢
ͦͯ͠ __toString ͷฦΓ ม໊ͱͯ͠ѻΘΕ·͢
ͭ·Γ __toString Λ܁Γฦͨ͢ͼʹ1, 2, 3 ... ͱ૿͍͖͑ͯ·͢ɻ
ͦͷΛ༻͍ͯ Fizz or Buzz or ࣈͱग़͚͠Λߦ͍ग़ྗͤ͞Ε͍͍ͷͰ͢
͔͠͠ɼͦͷ··Ͱग़ྗͰ͖·ͤΜ
ͦͷͨΊ print Λ༻͍ͯ ग़ྗΛߦ͍ͬͯ·͢
ϫϯϥΠφʔϋοΫͰฦΓ͕ͳ͍echo ΑΓฦΓ͕͋Δ print ͕ॏๅ͠·͢ʢͦͷ··ଞͷࣜʹࠞͥΒΕΔʣ
https://gist.githubusercontent.com/m3m0r7/f8059505046c6ab689aa728c2ca6f76c/raw/be78189cb305358cd57c5ab31c251dd2dcc656d1/fizzbuzz.php
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠