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

PHPに型推論を実装する ~入門編~ / Type inference on PHP

PHPに型推論を実装する ~入門編~ / Type inference on PHP

PHPカンファレンス福岡2016の資料です。

久保田光則

May 21, 2016
Tweet

More Decks by 久保田光則

Other Decks in Programming

Transcript

  1. ྫ4XJGU w ܕ৘ใΛॻ͔ͳͯ͘΋ܕΛਪ࿦ͯ͠ίϯύΠϧͯ͘͠ΕΔ w ͋͘·Ͱ੩తܕ෇͚ͳͷͰpC/VNCFSͷܕ͸*OU func fib(number: Int) -> Int

    { if number <= 1 { return number } else { return fib(number - 1) + fib(number - 2) } } var fibNumber = fib(8)
  2. τʔΫϯͷϦετΛੜ੒ ந৅ߏจ໦ "45 ͷੜ੒ ಺෦7.༻ͷ໋ྩΛੜ੒ ಺෦7.Ͱ࣮ߦ ࣈ۟ղੳ ߏจղੳ ίϯύΠϧ ࣮ߦ

    w 1)1Ͱ͸ɺߏจղੳ࣌ʹ͸"45Λੜ੒ w 7.༻ͷίʔυੜ੒͸ͦͷޙʹߦ͏Α͏ʹͳͬͨ 1)1Ͱͷ࣮ߦͷྲྀΕ
  3. ྫ <?php require 'path/to/util.php'; $code ='<?php $var = 42;’ echo

    ast_dump(ast\parse_code( $code, $version=30 )), "\n"; IUUQTHJUIVCDPNOJLJDQIQBTUCMPCNBTUFS3&"%.&NE
  4. ਪ࿦نଇʹΑͬͯਪ࿦͍ͯ͘͠ w ྫF ͱF ͷܕ͕JOUͰ͋Δ࣌ɺ F  F ͷܕ͸JOUͰ͋Δ w

    ྫF ͱF ͷܕ͕BSSBZͰ͋Δ࣌ɺ F  F ͷܕ͸BSSBZͰ͋Δ w ྫF ͷܕ͕0CKFDUͱF ͷܕ͕JOUͰ͋Δ࣌ɺλΠϓΤϥʔͰ͋Δ w ߏจ໦ΛͨͲ͍ͬͯ࣌͘ʹਪ࿦نଇΛద༻ w نଇ͸۪௚ʹίʔυΛॻ͍͍ͯ͘ w ܕ͕Θ͔ͬͨΒܕ؀ڥʹ൓ө͍ͯ͘͠
  5. ྫ w Ҿ਺ͷܕͱฦΓ஋ͷܕ͕ಉ͡Ͱ͋Δ͜ͱ͕ਪ࿦ Ͱ͖Δ function foobar($a) { return $a; }

    ED ܕม਺DΛܕม਺Eʹ΋ׂΓ౰ͯΔ ܕม਺DΛׂΓ౰ͯ ฦΓ஋ͷܕʹܕม਺EΛׂΓ౰ͯ