Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
̥̝̥ఇࠃͷٯऻʂ • ͜ͷτʔΫϠδOKͰ͢ • ͜ͷτʔΫস͍ͬͯͩ͘͞ • υϯυϯֻ͔͖ͬͯͯཉ͍͠
Slide 2
Slide 2 text
who am i ? UZULLA PHPer Hachioji.pm ʮϝʔϧϑΥʔϜΛॻ͍ͯੜ׆ʯ
Slide 3
Slide 3 text
Σϒք۾Ͱ ༗໊ͳʮPHPʯ ͕ɺͲΜͳͷ͔ օ͞Μͬͯ·͢ ͔ʁ
Slide 4
Slide 4 text
͕࣌ؒͳ͍ͷͰ! • ڈͨ͠ʮͳPHPDisʯͰάάͬͯͩ͘ ͍͞ • ࡢYAPC::AsiaͰҰ൪έͨ(?)τʔΫͰ͢ • ࠷ۙͷPHPͷۃॳาతͳ͜ͱղΔͣʢʁʣ • https://www.youtube.com/watch? v=2tZxNtn0kDc • http://www.slideshare.net/junichiishida/ yapc-2014-phpuzullatalk
Slide 5
Slide 5 text
ࡾߦͰ • PHPJavaͱPerlͱHTML/JSΛ·ͥͨΑ͏ͳ • ςϯϓϨʔτΤϯδϯͰ͢ • ʮΏΔ;Θ͆͆͆͆͆ʯ
Slide 6
Slide 6 text
ʮΏΔ;Θݴޠ͆͆͆ʯ • ࠷ۙͷPHPਅ໘ʹ͔ͭ͏ͱΏΔ;ΘͰͳ ͍ • ·͋ͰΏΔ;Θʹॻ͚Δ • ੍ࣗ৺ΛͬͯऔΓΉͷ͕ਖ਼͍͠PHPerͷ SUTAIRU
Slide 7
Slide 7 text
PHPఇࠃͷٯऻ • ʮٯऻͷͨΊʹணʑͱྗΛ͔ͨΊͭͭ͋Δ͕ɺ ຊฤʹೖΕͳ͔ͬͨΑ…ʯ • ʮͬͱ͕ΜΖ…ʯ
Slide 8
Slide 8 text
ʮPHPఇࠃਓࡐΛืूதͰ ͢ʯ • Έͳ͞ΜʹPHPΛॻ͍ͯΒ͍͍ͨ • ͦΕ͕ࢲͷΈͰ͢
Slide 9
Slide 9 text
͓ॻ͖ • དྷͨΔ͖PHP7ʹ͍ͭͯ • PHPͷΤϥʔʹ͍ͭͯ • ࠷ۙͷhttpdʹ͍ͭͯ • PSR-7ʹ͍ͭͯ • ʮ͋ͷਓࠓʯ
Slide 10
Slide 10 text
ʮۙະདྷPHPηϒϯʂʯ • ʮVarsion 7.0.0ʯ • ݱࡏbeta3ɺࠓͷౙstable༧ఆ • PHP6ແ͔ͬͨࣄʹʢ৭ʑ͋ͬͨʣ • ळʹ5.4EOL!ɺ5.5طʹSecurity fixes only http://php.net/supported-versions.php
Slide 11
Slide 11 text
·ͣ
Slide 12
Slide 12 text
!!!!!! RC1 Release YEAH!!!! !!!!!!
Slide 13
Slide 13 text
ࡾߦͰղΔPHP7 • ഒ͘Β͍͘ͳͬͨ! • ͍ํߏஙํ๏มΘ͍ͬͯͳ͍" • จ๏͕ਐԽɺPHPίʔυޓੑଟগյΕͨ# • ͞ͱҾ͖ସ͑ʹC֦ு܈͕க໋ইΛෛͬͨ$
Slide 14
Slide 14 text
͘ͳͬͨ݅ • ഒ͘Β͍͘ͳͬͨ • PHP7 >>>> PHP5.6 > PHP5.5,5.4 >> PHP5.3 • (HHVM)
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
ग़య https://kinsta.com/blog/hhvm-vs-php-7/ http://blog.litespeedtech.com/2015/07/24/ php-7-vs-hhvm-benchmark-series-2-wordpress/ http://blog.litespeedtech.com/2015/07/16/ php7-vs-hhvm-benchmark-series-1-hello-world/ https://www.zend.com/en/resources/ php7_infographic http://hhvm.com/blog/9293/lockdown-results- and-hhvm-performance https://ckon.wordpress.com/2015/08/09/
Slide 22
Slide 22 text
Կނ͘ͳ͔ͬͨʁ • ʮ͔ͤͬͭΕͨPHPਞӦ͕ຊؾͩͨ͠ʯ • ओʹมͷϝϞϦ্ͷߏ͕มߋ • ʮ΄Μͷͷ͍Εͭʂʯ • zvalͰάά͍ͬͯͩ͘͞ • (ͦͦԶ͕ͦΜͳʹৄ͘͠ͳ͍) • ঈͱͯ͠ɺC֦ு͕Ұશ໓ͨ͠ʢޙड़ʣ
Slide 23
Slide 23 text
ࠓޙ͘ͳΓͦ͏ • HHVMͷ༷ͳJITԽΛݟਾ͍͑ͯΔΒ͍͠ • ASTΛ࡞ΔΑ͏ʹͳͬͨ • ͞Βʹ͕৳ͼΔՄೳੑ
Slide 24
Slide 24 text
͍ • ͘ͳͬͨҎ্Ͱ͢
Slide 25
Slide 25 text
PHP7Ͱ͍ํมΘ͔ͬͨʁ • php-fpmΈ͍ͨͳͷ͕૿͑ͨͱ͔ͦ͏͍͏ͷ ແ͍ɻ • ࠓ·Ͱ௨Γͷmod_php,php-fpm,php(-cgi) • Ϗϧυํ๏΄΅ಉ͡ • Stable͕ͰΕɺී௨ʹaptʹΔͰ͠ΐ͏ • yumԿޙͩʁ(Ϩουϋοౘஊ
Slide 26
Slide 26 text
҆ఆ͍ͯ͠Δ • ͍··Ͱ௨ΓɺԿߟ͑ͳͯ͘མͪͮΒ͍ɻ ҆ఆ͍ͯ͠Δɻ • ʮPHP͕҆ఆʂʁʂʁʂʁʯ • ʮಔᮐύʔιϯʯͱ͍͏ࣾձ࣮ݧ • ·͋ɺॏ͘ͳΔ͚Ͳͳ͆
Slide 27
Slide 27 text
httpdपΓͰ… • ࠷ۙH2Oͱ͍͏httpd͕͋ΒΘΕ·ͨ͠Ͷʂ • ผʹPHPͱ͍͕ؔ͋͢͝ΔΘ͚Ͱͳ͍͚Ͳ • ͕࣌ؒ༨Ε͠·͢ɻ
Slide 28
Slide 28 text
PHP+httpdʹ͍ͭͯ • Apache+mod_php , (Apache+fastCGI) • nginx+fastCGI • H2O+fastCGI , H2O+CGIϚωʔδϟ • nginx+Apache+mod_php
Slide 29
Slide 29 text
Apache+mod_php • mod_phpͱ͍͏మ൘ • yumaptͰೖΔ • ΄΅ઃఆϨε͔ɺ.htaccessͰࡁΉ • ʢσϑΥϧτͰʣଟίωΫγϣϯʹऑ͍ • ͞ΕͲమ൘
Slide 30
Slide 30 text
Apacheͷઃఆ # httpd.conf LoadModule php5_module modules/libphp5.so SetHandler application/x-httpd-php # .htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L]
Slide 31
Slide 31 text
༨ஊɺҰߦAddHandlerηΩϡϦςΟతʹϠό ͍ # httpd.conf AddHandler php5-script .php • Α͘ݟ͔͚Δهड़͕ͩ… • http://d.hatena.ne.jp/tmatsuu/ 20150221/1424531513 • AddHandlerผʹʮ֦ுࢠʯͰͳ͍ͷ Ͱɺ.php͕ϑΝΠϧ໊Ͳ͜ʹ͍ͬͯͯPHP ͱͯ͠ղऍ͞ΕΔ᠘
Slide 32
Slide 32 text
nginx+php-fpm • ࠷ۙͷఆ൪͔ʁ • ࣮ࡍ͍ • nginxͳΜͰͰ͖ΔɺຊʹԿͰɻ • ݁ՌɺઃఆෳࡶʹͳΓ͕ͪ
Slide 33
Slide 33 text
nginxͷίϯϑΟάྫ index index.php try_files $uri $uri/ $uri/index.php /index.php; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; # !ͷઃఆϑΝΠϧͷதʹେྔͷઃఆ͕Ӆ͞Ε͍ͯΔ…ʂ include fastcgi_params; } • ղΓͮΒ͍ʂʂʂʂʂ • ͜Ε͚ͩͰμϝͳࣄ͋Δ
Slide 34
Slide 34 text
nginx㙽ʹ֯͘͜͠ͳΓ͕ͪ • FastCgiͷ߹Ͱ͋Δͷ͚ͩΕͲ… • /formͳͲɺPHPϑΝΠϧ໊͕ͳ͍URLΛ͏ ߹… • try_filesΛͪΌΜͱཧղ͠ͳ͍ͱμϝ • locationΛͪΌΜͱཧղ͠ͳ͍ͱμϝ • fastcgiͷύϥϝλΛͪͪ͘͘Ճͨ͠Γ • PATH_INFOΛͲ͏ੜ͢Δ͔ͰΉ
Slide 35
Slide 35 text
H2O+fastCGI , H2O+fcgi.spawn • ظͷ৽ਓ • http/2 • ઃఆϑΝΠϧ͕γϯϓϧʂ • ͦͷ··ͰߴʢΒ͍͠ʣ • ·ͩݟগͳ͍
Slide 36
Slide 36 text
h2o+php-fpm file.custom-handler: extension: .php fastcgi.connect: host: 127.0.0.1 port: 9000 type: tcp hosts: "doraperson2015.yapcasia.org:443": paths: /: file.dir: /var/www/dora-person-election/app/htdocs redirect: url: /index.php/ internal: YES status: 307
Slide 37
Slide 37 text
h2o+php- cgi(fastcgi.spawn) file.custom-handler: extension: .php fastcgi.spawn: "PHP_FCGI_CHILDREN=10 exec /path/to/php-cgi" • phpϓϩηεͷੈΛh2oʹ·͔ͤΒΕΔʂ • php-fpmෆཁɺࢹ͕ݮΔ! • ɺͺͬͱݟphp-fpmͱḮ৭ͳͦ͞͏ • php-fpm.confͳͲΛॻ͔ͳͯ͘ྑ͍"
Slide 38
Slide 38 text
h2oॴݟ ྑ͍ • ຊਓͷkazuho͞Μ͕ͭͬͯ͘Δʂʂ • ࣭͢Δͱɺ͓͑ͯ͘͠Εͯ͞͠ ͍ʂʂʂʂ • ଞʹ͘Βɺ࠷ݶͷઃఆϑΝΠϧγϯϓϧ Ͱ͋Δ • ϑΝΠϧ֦ுࢠʹͻ͍ͮͯΔͷͰɺ҆શ • fastcgi.spawnศརʂʂʂ
Slide 39
Slide 39 text
h2oॴݟ ଟ͜Ε͔Βͷ • .htaccessແ͍ͷͰɺڽͬͨઃఆͩͱͬͺ Γ͍ • try_filesతͳ֓೦Θ͔Βͳ͍ͱ… • ͽͪͺʔʹϏϧυ͕໘ • yumͱ͔aptͱ͔΄͍͠ΑͶ͆ • ઃఆͷൿͷͨΕ·ͩগͳΊɺಛʹӡ༻ • ߏ͕গʑಠಛɺinit.dͳͲͲ͏͢Δʁ
Slide 40
Slide 40 text
ͲΕ͕ྑ͍͔ • ʮଟগͯ͘άάΕղܾ͢ΔApacheʯ • ʮnginxͷίϯϑΟάɺෳࡶ͗͢ͳ͍ʁʯ • ʮH2Oʢ·ͩʣάάͬͯղܾ͠ͳ͘ͳ͍ʁʯ • దࡐదॴ
Slide 41
Slide 41 text
༨ஊɺPHPΰϛΛ٧ΊࠐΉจԽʁ͕͋Δ • ઃఆ͢ΔػೳຖͰͳ͘ɺΞϓϦຖͰԡ͠ࠐΊΔ ͱPHPͬΆ͍ • .htaccesshttpdͷઃఆ͔ΒURLϚοϓΛͻ͖ ͕ͯͯ͠ɺָ • PHPͷαΠτࠞࡌʹͳΓ͕ͪɺΠέͯΔํ๏ ͕ͳ͍ͷ͔ͱͳ·͍͠ɻ • ࠶ىಈ͕ඞཁͰ͍͍͔Βɺ.htaccessΈͨ ͍ͳͷ͕΄͍͠…
Slide 42
Slide 42 text
bench • έʔεόΠέʔε͗͢Δ… • Apacheͷνϡʔϯ໘ • nginxയવͱ͘ͳΔ͕ɺྑ͍ઃఆͰΉ • ʮH2Oύϥϝλ͕σϑΥϧτͰΠέͯΔʂʯ ͱ࡞ऀ͕ओுͯͯ͠ΛసՇͰ͖Δ(?)
Slide 43
Slide 43 text
͞Βʹ༨ஊ • PHPPaaS;͖͑ͯͯ·͢ • Heroku • Azure app service • Google App Engine • ͍ͣΕਖ਼ࣜʹʢͱ͍͑ɺ·ͩPHP5.5ɺ. 6͘Β͍ʣ
Slide 44
Slide 44 text
͍
Slide 45
Slide 45 text
PHP7ͷඇޓੑͷ • ʮϚΠφʔͰޓੑ͕յΕΔࣄʹʢҰ෦Ͱʣ ఆධͷ͋ΔPHPʯ • ϝδϟʔόʔδϣϯΞοϓͳͷͰյΕͨ!
Slide 46
Slide 46 text
લ͖ͳํͷඇޓੑʢޙड़͠·͢ʣ • େඇਪ͕࣮ؔࡍʹআ • ϚχΞοΫͳՕॴͷڍಈͷมԽ • ࡉ͔͍จ๏ͷඇޓੑ • ༧ޠ
Slide 47
Slide 47 text
݁ߏ೦ͳํͷඇޓੑ • C֦ு(ॴҦpeclͱ͔)ͷඇޓੑ • gdͱ͔͋Δ • memcacheʮdʯ͋Δ͚Ͳɺmemcache ͳ͍ • redisͱ͔ɺQueueܥͱ͔͕ʢ·ͩʣͳ͍ • PPͷͷ(େମ)ಈ͘ • Release·Ͱʹͬͱ૿͑Δͣ
Slide 48
Slide 48 text
ʮ͜ͷઌੜ͖Δʹʯ • ʮC͕Θ͔Βͳ͍PHPer͔ͭ͠ͳ͍Α Ͷ…ʯ ʮ͑ͬPHPerͬͯCΘ͔Βͳ͍ͷʁʯ • ϝδϟʔॴϘνϘνରԠ͞Ε͍ͯΔ • C֦ுΨϦΨϦॻ͍͖ͯͨํʑɺ͔ͯ͠͠ ݟΓͷλΠϛϯά͔͠Εͳ͍͆
Slide 49
Slide 49 text
ʢҰ෦ͷXSΛॻ͘CPANԦαʔͷօ͞Μʣ • ʮͲ͔ͬͰฉ͍ͨ͜ͱ͋Δͩͳʯ • ʮ෦APIมΘΔͷɺ͔ͨ͠ͳ͍͚Ͳ͎ŵŧƄແ ཧ…ʯ
Slide 50
Slide 50 text
͍
Slide 51
Slide 51 text
ݴޠͱͯ͠ͷվળ • ඇਪͷΓࣺͯ • Type HintingվΊ Type declarationsʢܕએݴʣͷڧԽ • ΤϥʔͷऔΓѻ͍ͷڧԽ • จ๏ͷՃ
Slide 52
Slide 52 text
ඇਪͷΓࣺͯ • ‼mysqleregͷϏοάωʔϜ͕͍ͭʹഇࢭ • ❗ศར(ҋ)ػೳɺpreg_replaceͷ e(eval)ഇࢭ • ❔ݹͷ=&ɺ<%ʙ%>ɺʙͷഇࢭ • ͍ͣΕ͍͜ͱܯࠂࡁΈ • 105.3Λ͍ͬͯͯʮϏοάΣʔϒʹΖ ͏ͥʂʯͱ͍͏ॴ͕ࢮ͵
Slide 53
Slide 53 text
Type declarations(ܕએݴ) • ݩType Hinting • ҾฦͷʮܕʯΛࢦఆ • ʢPHPͷʮܕʯͰ͢ʣ • ʮJava͍ʯ • ҧͰྫ֎ʢPHP<7Τϥʔʣ • 7͔ΒεΧϥΛࢦఆՄೳʹ㊗ • 7͔ΒฦࢦఆՄೳʹ"
Slide 54
Slide 54 text
ͷεΧϥ͕ࢦఆՄೳʹʂ TypeError Exception !" func('1'); // => OK #$ • ʮ͔͠͠'1'௨Δʯ • ʢօ͞ΜʣʮOK͡ΌͶ͑Α͆͜Ε͔ͩΒ PHPer͆͆͆ʯ
Slide 55
Slide 55 text
…ͱ͓͔ͬͨʁ
Slide 56
Slide 56 text
strict_types TypeError " func(1.0); // => TypeError "" func(true); // => TypeError """ • ઌ಄ͷdeclare(strict_types=1);Ͱݫ֨ʹ • float=>int❌ͳͷɺڻ͖ͷϚοτͳڍಈ͆
Slide 57
Slide 57 text
ͨͩ͠ • int->floatΩϟετʮOKʯ • ʢ͕ܽམ͠ͳ͍͔ΒͩΖ͏ʣ • Type declarationsʹΑͬͯɺ༧ظͤ͵ܕΩϟε τ͕ൃੜ͢Δ͜ͱ͕…
Slide 58
Slide 58 text
ࣗಈΩϟετͰ͜Ε͕ΤϥʔʹͳΔ floatΩϟετ͞ΕΔ! • ·͋ɺPHPΒ͍͠Ͱ͢Ͷ"
Slide 59
Slide 59 text
͜Εخ͍͠ɺฦࢦఆՄೳ
Slide 60
Slide 60 text
೦ʁҙʁϙΠϯτ
Slide 61
Slide 61 text
ʮͱ͜ΖͰɺTypeʹԿ͕ࢦఆͰ͖Δͷʁʯ • array • callable,Closure(ແ໊ؔ) • Ϋϥε/ΠϯλʔϑΣΠε • int,float,string,bool ㊗Ճ
Slide 62
Slide 62 text
͜͏͍͏ͷࢦఆͰ͖ͳ͍ • ❌ : (function(int): int) • (HackͳΒͰ͖Δ) • ❌ : \DateTime[] • PHPDocͰ͓ͳ͡Έɺཉ͍͠… • ❌ : mixed • ·͊ɺॻ͔ͳ͚ΕՁ
Slide 63
Slide 63 text
ͬͨ࣌ɺͲ͏ͳͷʁ • ༗Γ 0.4381 sec • ແ͠ 0.3516 sec • ࠩ 0.0865 sec(86.5ms) / Ұઍສճ • MBP i7+PHP7β2Ͱɺ10,000,000(Ұઍສ)ճ͠ ͯ͜ͷఔ • (PHPͷ༻్Ͱ)࣮༻্ޡࠩͳͷͰؾܰʹ͍ ͍ͨɻ
Slide 64
Slide 64 text
ࢼͨ͠ίʔυ
Slide 65
Slide 65 text
͍
Slide 66
Slide 66 text
க໋తΤϥʔͷϋϯυϦϯά͕Մೳʹ ͳͬͨ • PHPʹྫ֎ͱΤϥʔɺೋ͕ͭଘࡏ • Τϥʔʹக໋త(Fatal)ͱඇக໋త͕͋Δ • க໋తΤϥʔ؆୯ʹϋϯυϧͰ͖ͳ͔ͬͨ • PHP7͔Β(Ұ෦Λআ͖)Fatal ErrorΛྫ֎Ͱϋ ϯυϧՄೳ! • https://wiki.php.net/rfc/ engine_exceptions_for_php7
Slide 67
Slide 67 text
PHPͷʮExceptionʯ • ΈΜͳ͕ͬͯΔྫ֎ͦͷͷ • catchͯ͠ճ෮Ͱ͖Δ • Θ͔Γ͍͢ʂʂ
Slide 68
Slide 68 text
PHPͷʮΤϥʔʯ • ਅ໘ʹ͢ͱ30Ҏ্͠ΌΕΔͷͰ3ߦͰ • શମͰҰݸ͔͠ϋϯυϥΛొͰ͖ͳ͍ྫ֎Έ ͍ͨͳͷ • க໋తͳΤϥʔɺεΫϦϓτΛͦ͜Ͱऴྃ͞ ͤΔ(ճ෮ෆՄೳ) • ྫɿύʔεΤϥʔɺॏෳએݴΤϥʔɺඇଘࡏؔ ίʔϧΤϥʔ • ʢৄ͖͖͍ͨ͘͠Ͱ͔͢ʁʣ
Slide 69
Slide 69 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 1 • ΤϥʔΤϥʔϋϯυϥʹɺίʔϧόοΫؔ Λొ͢Δ(set_error_handler())͜ͱͰΩϟ ονͰ͖Δ • ϦΫΤετͰɺάϩʔόϧͳઃఆͰ͋Δ • ྫ֎ͷΑ͏ʹɺ֊ԽͰ͖ͳ͍ • ͭ·Γہॴతͳࠩ͠ସ͑Մೳ͕ͩɺඇৗ ʹෆศ
Slide 70
Slide 70 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 2 • ϋϯυϥΛͰΤϥʔΛΩϟον͢Δͱ… • WarningsNoticeग़ྗ͞Εͳ͍ • ѲΓͭͿͤΔ • E_RECOVERABLE_ERRORεΫϦϓτΛऴྃ ͠ͳ͍ʢҙ͕ඞཁʣ
Slide 71
Slide 71 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 3 • set_error_handler()Ͱྫ֎ʹม͢Δࣄ͕ Ͱ͖Δ set_error_handler(function($errno, $errstr, $errfile, $errline){ throw new ErrorException($errstr, $errno, 0, $errfile, $errline); });
Slide 72
Slide 72 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 4 • ͨͩ͠ɺக໋తͳΤϥʔଈࢮͰϋϯυϧͰ͖ ͳ͍(PHP<7) • register_shutdown_functionΛ͔ͭͬͨ τϦοΫ͕ඞཁʢ෮ؼͰ͖ͳ͍ʣ register_shutdown_function( function(){ $e = error_get_last(); if( $e['type'] == E_ERROR || $e['type'] == E_PARSE || $e['type'] == E_CORE_ERROR || $e['type'] == E_COMPILE_ERROR || $e['type'] == E_USER_ERROR ){ // ͓͖ͳॲཧΛॻ͘ echo "க໋తͳΤϥʔ͕ൃੜ͠·ͨ͠ɻ\n"; echo "Error type:\t {$e['type']}\n"; echo "Error message:\t {$e['message']}\n"; echo "Error file:\t {$e['file']}\n"; echo "Error line:\t {$e['line']}\n"; } } );
Slide 73
Slide 73 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 5 • ൃੜͨ͠Τϥʔࣗମͷग़ྗઌมߋՄೳ • ϒϥβʔ(display_errorsͰOn/Off) • ϩάग़ྗ(stderr,syslog,ϑΝΠϧ) • ͜ͷೋͭฒྻతͳ
Slide 74
Slide 74 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 6 • Τϥʔʹࢁछྨ͕͋Δ • ඇக໋తͳͷ • E_NOTICEɺE_WARNINGɺ E_DEPRECATEDɺ… • க໋తͳͷ • E_PARSEɺE_ERRORɺ… • Ͳͬͪͱ͍͑ͳ͍ͷ
Slide 75
Slide 75 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 7 • E_RECOVERABLE_ERROR(ޙड़)ʮΩϟον͢ Εʯͦͷޙ࣮ߦͰ͖Δ • ྫ͑ɺType declarationsͷҧͰग़Δ • ͜ΕΛΩϟονͯ͠Ͳ͏ʹ͔ͯ͠Δίʔυ ݟͨࣄແ͍…
Slide 76
Slide 76 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 8 • ΤϥʔઃఆʢϏοτϚεΫʣͰൃੜछྨΛࢦ ఆՄೳ • error_reporting(0)࠷ڧɺԿग़ͳ͍ • ʮக໋తΤϥʔͰ͢Βʂʯ • ʮࣗʯͷύʔεΤϥʔʢE_PARSEʣ ϜϦ • includeͷύʔεΤϥʔ௨աͰ͖Δ ʢʂʣ
Slide 77
Slide 77 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 9 • ѱ໊ߴ͍@ɺ؆୯ʹΤϥʔΛ੍Ͱ͖Δɺͦ ͏ɺFatalͰͶʂ • ͍Ͱ͢ɻ • includeͨ͠ϑΝΠϧͷύʔεΤϥʔ ʢE_PARSEʣϜϦ • error_reporting(0)ͷํ͕ͭΑ͍
Slide 78
Slide 78 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 10 • ༨ஊɿPHPʹʢࠓݱࡏʣίϯύΠϧϑΣʔζ ͳ͍
Slide 79
Slide 79 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 11 • ඇக໋ͷNotice,Warningऴྃ͠ͳ͍ • Τϥʔ͕ग़ྗ͞ΕΔ͚ͩ • ѱ໊ߴ͍ʮը໘ʹग़ΔΤϥʔʯ • ʢॳ৺ऀʣʮઃఆΛίϐϖͨ͠ΒΤϥʔ͕ ͚ͤ·͢ʂʯˠ(ݟ͑ͳ͘ͳ͚ͬͨͩ)
Slide 80
Slide 80 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 12 • use strict;͕ཉ͍͠… • ͨͩɺʹͨΑ͏ͳ࡞ΕΔ • http://uzulla.hateblo.jp/entry/ 2013/12/20/041619
Slide 81
Slide 81 text
PHPͷҋਂ͖Errorʹ͍ͭͯ 13 • 㙽ʹ֯ʂ • க໋తΤϥʔ͜Ε·Ͱ෮ؼͰ͖ͳ͔ͬͨ❗ • ྫɿଘࡏ͠ͳ͍ؔίʔϧɺએݴͷॏෳͳ Ͳ
Slide 82
Slide 82 text
͘ଓ͍͖ͯͨ(99%ͷਓࠔͬͯͳ͍) • ଞͷݴޠΑΓக໋తΤϥʔͷൣғ͕ͪΐͬͱ ͍ • ͋·Γeval͕ಘҙͰͳ͍ • க໋తΤϥʔϦΧόϦͰ͖ͳ͍ • σετϥΫλݺΕͳ͍ • ʮന͍ը໘(ಥવࢮ)ʯΛճආ͠ɺจ຺ʹԠͨ͡ Τϥʔը໘Λ͢Δͷ͕ͪΐ͍໘
Slide 83
Slide 83 text
PHP7͔Βɺக໋తΤϥʔྫ֎ͰϦΧόϦʔ Ͱ͖Δ • \Error ΫϥεΛͱͨ͠Ϋϥε͕ྫ֎Ͱ͛ ΒΕΔ • க໋తͳΤϥʔͷʮେମશ෦ʯ͕ʮྫ֎ʯʹͳ Δ • ͳͬͯͳ͍ॴ͋Δʢྫɿ࠷ॳͷίʔυͰ ύʔεΤϥʔΩϟονෆೳʣ • ࠷ޙ·ͰΩϟον͞Εͳ͔ͬͨྫ֎ैདྷͷΤ
Slide 84
Slide 84 text
͜ΕʹΑͬͯ • PHP͕ຯʹෆಘҙͳʮΧοίΠΠ500ʯ͕ग़ ͘͢͠ͳΔʢ͔ͳʣ • ϝλ͍ίʔυΛॻ͍ͨͱ͖ɺଈࢮ͢ΔՄೳੑΛ ݮΒͤΔ(ؾ͕͢Δ) • ίʔϧόοΫؔΛଟ༻͢Δͱ͖ͱ͔ศརʢͦ ͏ʣ • σʔϞϯͳͲΛॻ͖͘͢ͳΔʢ͔ͳʣ
Slide 85
Slide 85 text
ྫ
Slide 86
Slide 86 text
ҙ • NoticeɺWarningྫ֎ʹʮͳΒͳ͍ʯ • ྫ֎ΛΩϟον͠ͳ͍Ͱऴྃ͢Δͱɺطଘ ίʔυΛյͪ͠Ό͏ • ͭ·Γʮେ౷ҰΤϥʔϋϯυϦϯάʯͰͳ͍ • ࠓ·Ͱ௨Γset_error_handlerͰྫ֎ʹม Մೳɺ͕ΜΕʂ
Slide 87
Slide 87 text
ઌऔΓDisΓใɺΤϥʔฤ • PHPerΏΔ;ΘͳͷͰ catch(\Exception $e) ͱ͔͍͏ϫΠϧυΧʔυΛ͍͕ͪ • ҆қʹ\Exception ͷαϒΫϥεͰΤϥʔͷྫ ֎Λੜ͢ͱʮΏΔ;ΘPHPerͷ໋͕Ϡό͍ʯ • ݁Ռɺ\Exceptionͷ͞ΒʹΫϥεͱͯ͠ \Throwable͕Ͱ͖ͨɻ\Error\Throwable ͷࢠʹɻ
Slide 88
Slide 88 text
࣮ • ͱ͜ΖͰɺ࣮\ErrorExceptionͱ͍͏ྫ֎ ͢Ͱʹ͋Δ • ʮPHPͷݩ͔Β͋ΔErrorͱɺErrorͱ͍͏৽ ͍͠ྫ֎ΫϥεͱɺErrorExceptionͱ͍͏ྫ ֎Ϋϥε͕ࠞࡏʯ • ͍ͩ͆͆͆͞ • ʢ͜͜Beta1͋ͨΓͰRFC͔Β͍͖ͳΓ༷ ͕͔ΘͬͨͷͰɺ·ͨมΘΔ͔ʣ
Slide 89
Slide 89 text
ʮࠓޙ༧͞ΕΔະདྷʯ • ʮφϧϗυʂʂࠓޙcatch(\Throwable $e) ͔͚͍͍ͬͯΜͩͶʂʂʯ • ʮ!ʯ • ʢerror_reporting(0)ͬͯॻ͍ͯΔਓ͍Δ ͔Βɺ͋ͳ͕ͪஊͰͳ͍ʢഭਅʣʣ
Slide 90
Slide 90 text
͍
Slide 91
Slide 91 text
จ๏ͷՃ • ??ԋࢉࢠ(isset͔Βͷ։์ʣ<=>ԋࢉࢠ • ແ໊ΫϥεͷՃ
Slide 92
Slide 92 text
??ԋࢉࢠ • ΈΜͳେ͖isset͔Βͷ٫ if(isset($_GET['name'])) $name = $_GET['name']; else $name = 'anonymous'; ! $hoge = (isset($_GET['name'])) ? $_GET['name'] : 'anonymous'; ! $name = $_GET['name'] ?? 'anonymous' ; • ??ະఆٛมʹ৮ͬͯେৎͰ͢ɺศ རʂʂʂʂ
Slide 93
Slide 93 text
<=> UFOԋࢉࢠ • Rubyͷ͋ΕͰ͢ɺιʔτ͕ศརʹʂʂ 3, "name"=>"uzulla"], ["id"=>2, "name"=>"lestrrat"], ["id"=>10, "name"=>"moznion"] ]; usort($item_list, function ($left, $right) { return $left["id"] <=> $right["id"]; });
Slide 94
Slide 94 text
ෳΧϥϜࢦఆͰ͖·͢ [$right["id"], strlen($right["name"])] ; }); • ͜ΕSQLͷෳORDERͬΆͯ͘ศརͬΆ͍
Slide 95
Slide 95 text
ແ໊Ϋϥε • ΠϯϥΠϯͰɺଈ࣌ʹΠϯελϯεੜͰ͖Δ • DIͰɺͦͷͰΧδϡΞϧʹΠϯελϯεڍ ಈΛม͑ΒΕͯศར…͔ͳ • (DIͱ͔͔͍ͯ·͢ͷ͕ɺʮਖ਼͍͠DIʯʹ͍ͭ ͯצห͍ͯͩ͘͠͞)
Slide 96
Slide 96 text
ྫ setLogger( new class extends \My\Logger { public function emergency( $message, array $context = [] ){ \My\AlertPush($message); parent::emergency($message, $context); } } ); • ͜Ε֦ுͯ͠Δ͚ͲɺѲΓͭͿ࣌͢ͱ͔ʢʣ ʹ͑ͦ͏Ͱ͢Ͷ
Slide 97
Slide 97 text
༧ޠ͕Ճ • Ϋϥε໊/ΠϯλʔϑΣΠε໊ • ຯʹΠϯύΫτ͕͋Δ • int, float, bool, string, true, false, null, resource, object, mixed, numeric • Ұ෦ͷWAFʹɺStringͱ͍͏Ϋϥε͕…
Slide 98
Slide 98 text
PHP7ͷIDEͷରԠ!
Slide 99
Slide 99 text
͍ • ·͋ɺΦγϟϨʹͳΓ·͢Ͷ • ແ໊Ϋϥε͍·͘ΔͱίʔυδϟϯϓͰ͖ͳ ͘ͳΓͦ͏ͳͷͰ΄Ͳ΄Ͳʹ͢Δ༧ఆͰ͢ • ༧ޠʹΑͬͯຯʹಈ͔ͳ͍ΞϓϦ͕͋Δ…
Slide 100
Slide 100 text
Γ্͕Γ • ਐΉίϯϙʔωϯτԽ • PSR-7ʢ…͕͜Ε͔Β͘Δʁʣ • ʮϏοάϓϨΠϠʔʯ
Slide 101
Slide 101 text
ίϯϙʔωϯτԽ • PSR-0,4 ͱComposerͷීٴͰී௨ͷݴޠͬΆ ͘ͳΓ… • ୯ମͷORMɺϧʔλʔɺςϯϓϨʔτɺDI׆ ༻͕׆ൃʹͳΓ… • Symfony, Aura, Zend Framework • ʮΦϨΦϨWAFେ͖ʂʂʯͳਓʹ࠷ߴ
Slide 102
Slide 102 text
ʮϑϨʔϜϫʔΫࢮΜͰ͍ͳ͍ʯ • 0͔Β·ΕͨൿͷϑϨʔϜϫʔΫɺڊେ ͳϞϊγϦοΫϑϨʔϜϫʔΫ͔Βͷ٫… ͱɺ͍͏ײ͡Ͱͳ͍ɻ • ݁ہͦΕΒΛ͔ͭͬͨϏοάFW͕ΘΕͯΔ • ͦΕΒͷதͰίϯϙʔωϯτΛ͔͍ͭͬͯͯ ɺ݁ہδϟΠΞϯτϦʔϓൃੜ͢Δ
Slide 103
Slide 103 text
ͦΜͳࡢࠓɺྲྀߦΓͦ͏ͳPSR-7 • HTTPϝοηʔδΫϥεɺrequest/response • perlͰ͍͏ HTTP::RequestɺJavaͰ͍͏ ServletΈ͍ͨͳͷ͕ཉ͍͠ɺͱ͍͏ྲྀΕʢࠓ ·ͰFW͕Ί͍Ί͍ʹͬͯͨʣ • PHPࣗମͷػೳͰͳ͍͠ɺinterfaceͰ͔͠ͳ ͍
Slide 104
Slide 104 text
ʮPSRͬͯʁʯ • ༗ࢤʹΑΔɺ۩ମతͳઃܭ༷ͷఏҊ • ΦʔτϩʔυͷϑΝΠϧܗࣜɺϩΨʔAPI • ͋͘·Ͱ༗ࢤͷఏҊͰɺʮ๏ʯͰͳ͍ • ੈلౖΓͷPHPσεϩʔυʹடং͕(ը૾ུ) • ڈͷࢲͷൃදΛݟ͍ͯͩ͘͞
Slide 105
Slide 105 text
PSR-7ͷϝϦοτ • PHPಠಛͳɺάϩʔόϧม͞ΘΓ·͘Γੈք ʢ$_GET, $_POSTͳͲʣ͔Βͷ٫(ʁ) • ຯʹ໘ͳ$_FILESͱ͔ΛOOPతʹ৮ΕΔ • ͪΌΜͱ࣮ͨ͠ͳΒɺʮob_*ʯΛۦ͢Δ ඞཁݮΔ(ޙड़)
Slide 106
Slide 106 text
• ൚༻Mock͕࡞Γ͘͢ͳΓςελϒϧɺαϒ ϦΫΤετͱ͔͍͢͠ʢ͔ʣ • Plack::Middleware Έ͍ͨͳͷ͕ͭ͘ΕΔΑ ͏ʹͳΔͣ • ϦΫΤετͷϩΪϯά͘͢͠ͳΔͣ • reactPHPͳͲɺPHPͰॻ͔Εͨhttpd͕ॻ͖ ͘͢ͳΔʢؾ͕͢Δʣ
Slide 107
Slide 107 text
σϝϦοτҙ • ੜ$_POSTɺੜechoͷํ͕͍ • ૉखͰ͞ΘΔʹେੜͳAPIʢWAF͕Ӆṭ͢ ΔͩΖ͏͚Ͳʣ • $_SESSIONʮؚ·Εͳ͍ʯ! • $_POSTʮӅͤͳ͍ʯɺੜecho͢Δͱग़ͪ Ό͏ɺ؆୯ʹҳͰ͖ΔʢٻΊΒΕΔ੍ࣗ৺ʣ
Slide 108
Slide 108 text
ڍಈ࣮࣍ୈͳͷͰ… • ༷௨ΓͪΌΜͱ࣮͢Δͷେมͦ͏ • ʮob_*Λීஈ͔Β͔͍ͭ͜ͳ͠ɺόΧͰ͔͍ CSVΛग़ྗ͍ͯ͠Δօ͞·ʯɺΠϯελϯε ʹϨεϙϯεΛͨΊࠐΉࣄʹջٙతͰ͠ΐ͏ɻ ࣮ࡍɺμϝͳ࣮ʮՄೳͰ͢ʯɻ • ʮॻ͖ग़ͯ͠෦ϦμΠϨΫτ͠Α͏ʯ ʮੈͷதʹapache+mod_php͔͠ͳ͍ਓ ͍ΔΜͰ͢Αʂʯ
Slide 109
Slide 109 text
My fav WAFͰ͋ΔSlim3ͷPSR-7࣮Ͱ • php://tempΛ͔͍ͭͬͯͨ • PHPΈࠐΈͷετϦʔϜϥούʔ • ΦϯϝϞϦʹอ࣋͠ɺσϑΥϧτͰ2MB Λ͑ΔͱཪͰϑΝΠϧʹॻ͖ग़͢
Slide 110
Slide 110 text
༨ஊ:"Stream"ͷଟ༻ʹ͍ͭͯ • αΠζ͕༧ͮ͠Β͍bodyΛѻ͏ͨΊʹ Stream͕ΘΕΔࣄ͕ଟ͍༷ • ΧδϡΞϧʹมΛ͍͍ͨPHPerʹ໘͆ • WAFʹӅṭ͞ΕΔͷͰɺීஈҙࣝ͠ͳͯ͘ ྑ͍͕ɺ͕ෆ҆ • ͪͳΈʹ$HTTP_RAW_POST_DATAPHP7Ͱແ͘ ͳΔɻphp://inputΛ͔ͭ͏͔͠ͳ͍ʢͦͯ͠ ͜ΕmultipartͰ͔ͭ͑ͳ͍ͷͰɺྗۀͰ౷
Slide 111
Slide 111 text
PSR-7ͷ࣮Λ͍͔ͭ͘ݟͨײ • ݱঢ়WAF͕Ί͍Ί͍ʹ࣮͍ͯ͠Δ • ͳ͔ͳ͔టष͍͜ͱΛ͍ͬͯΔɺΤοδέʔ ε͋Γͦ͏… • ಠࣗContent-typeͱ͔ߟ͑ͯͳ͍Ϡπ͋Δͬ Ά͍ • ͍͖ͳΓ͜ΕΛʹ͢Δͷෆ҆
Slide 112
Slide 112 text
ʮPSR-7ඞਢ͔ʁʯ • ྫྷ੩ʹ͍͑ɺNo • ৽͍͠ࣄ͕Ͱ͖ΔΘ͚Ͱͳ͍ • ͔͠͠ΦγϟϨ…ςετͦ͢͠͏…͗͠ ͦ͢͏… • ʢࢲੈؒΒͣͳͷͰɺ͜͏͍͏ʹὃ͞Ε ͍͢ʣ
Slide 113
Slide 113 text
༨ஊ • ʮαʔϒϨοτ͡ΌΜʯʮ͍ʯ • ʮ͜ͷձʹݟ͋;ΕΔํ͍Βͬ͠Ό͍· ͤΜ͔ɺཔΉྑ͍PSR-7࣮Λ࡞ͬͯ͘Εʯ • ʮPHPͰॻ͔Εͨhttpdͷ͕࣌͘Δʂʯʢͱ ͍͏ئʣ
Slide 114
Slide 114 text
͍
Slide 115
Slide 115 text
ϓϨΠϠʔͷ • ʮPHPͳΜͯͩΕ͔ͭͬͯͳ͍Ͱ͠ΐ͆͆ ͆ʯ • ʮΠέͯΔاۀPHP͔ͭͬͯΔͧʂʂʯ • ʮ·ͩFacebookཔΈʁ͆͆ʯ
Slide 116
Slide 116 text
ϝϧΧϦ༷ • YAPCεϙϯαʔͰ͋ΒΕΔ
Slide 117
Slide 117 text
ಔᮐύʔιϯ
Slide 118
Slide 118 text
ҧ͏
Slide 119
Slide 119 text
• chatwork…PHPͰScala…
Slide 120
Slide 120 text
πΠΩϟεʂ • BUT… ʮେମCͰॻ͍ͯΔʯʢࣾ͞Μஊʣ • ͨͯ͠PHP7ʹҠߦ͢Δͷ͔…ʁ
Slide 121
Slide 121 text
͍͍ɺ͋ͦ͜PHPͰ͢Αʁ
Slide 122
Slide 122 text
slack!!!
Slide 123
Slide 123 text
Slack • https://twitter.com/SlackHQ/status/ 426469205005705217 • PHPslack͔ͭͬͯΔʂʂʢ/index.phpɺ ͕͋ΔͬΆ͍ʂʣ • ʮslackఔʯ·ͰͳΒPHPྑ͍Θ͚Ͱ͢Αɻ • ʢ·͍͔͋ͭͷΓ͔͑ΔͩΖ͏͚Ͳʂʂʣ • ʢπΠοτ2014/01ࠒʣ
Slide 124
Slide 124 text
• ͍͔ͭPHPΛʮଔۀʯ͢Δձࣾଟ͍Ͱ͠ΐ ͏ɺΘ͔Δɻ • ͰɺʮάϫοͬͱΛͭ͘ΔʯͷʹPHP ͍ͯͨΓ͠·͢ • ʮෛ࠴ʁෛ࠴͕ͳ͍ݴޠͱʁʯ
Slide 125
Slide 125 text
ͦͯ͠ະདྷ… • PHPͷσεϩʔυײઌͰݮ͖͍ͬͯͯΔ • ͔͠͠ɺϞμϯͳPHPͲ͜ʹ͍Δͷ͔ʁ • ʮࠓ͔ΒʯPHPΛΔҙຯ͕͋Δͷ͔ʁͱ͍͏ ͝ҙݟ • ʮԿͰ࡞Δ͔ΑΓɺԿΛ࡞Δ͔ͩΖʂʂʯ • ʮPHP͘Β͍ͳΒͰ͖ΔͰ͠ΐʁʯͰਓूΊ ʢPHP͕Ұ൪͍͠ͱ͍͏Ұ෦ͷ͝ҙݟʣ
Slide 126
Slide 126 text
https://github.com/blog/2047-language-trends- on-github
Slide 127
Slide 127 text
༨ஊɿݸਓతͳ࠷͍͔ۙͭ͘ͷଉۤ͠ ͞ • ϞμϯͳWAFɺPSRͳͲͰʮϕετϓϥΫςΟ εʯ͕ߴ·Δ • ʮ͜͏͠ͳ͍ͷඍົʯͱ͍͏෩ை • ʮͬͱྑ͍ख๏ʯͷൃ໌ʮγϯϓϧ͞ʯΛ ԡ͑͞ࠐ·ͳ͍͔ʁ • Έ͕ݮͬͨͷ͔૿͑ͨͷ͔ྑ͘ղΒͳ͍
Slide 128
Slide 128 text
࣭ٙԠλΠϜ • ͳʹ͔͍͟͝·͔͢ʁ • ແ͚Ε…
Slide 129
Slide 129 text
͋ͷਓࠓ
Slide 130
Slide 130 text
HHVM
Slide 131
Slide 131 text
3ߦͰղΔHHVM • Facebook࡞ͷɺޓੑ͕ߴ͍PHPϥϯλΠϜ • fastCGIɺ·ͨhttpdαʔόͱͯ͠ಈ࡞ • Hackͱ͍͏PHPΛຐվͨ͠Ϟμϯ෩ݴޠ͕ ͑Δ
Slide 132
Slide 132 text
HHVM Ͳ͏ͳͬͨʁ • ߴԽͱ͍͑HHVMͩͬͨͷͰʁ • PHP7ʹ͕ฒΕͨʢ·͋ɺPHP7· ͩStableग़ͯͳ͍͚Ͳʣ • Hackͱ͍͏ݴޠʁ • গͳ͘ͱɺຊͰϚδͰྲྀߦͬͯͳ͍ • ւ֎ͰFBҎ֎Ͱྲྀߦͬͯͳ͍ͷͰ …ʁ
Slide 133
Slide 133 text
ʔϜ
Slide 134
Slide 134 text
ݱঢ় • HackݴޠਐԽͯ͠Δ • ଂhttpd͕Ͳ͖ͬͯͨ • όʔδϣϯ݁ߏॱௐʹ্͕͍ͬͯΔ • 3.7>3.8Ͱ5ʙ10%͕͋ͬͨΓͯ͠Δ
Slide 135
Slide 135 text
ࠓͷॴɺcommitਰ͑ͨΓ͍ͯ͠ ͳ͍ • ίϛολύοͱݟͰݮ͍ͬͯͳ͍
Slide 136
Slide 136 text
HHVM,PHP7ʹΑΔڝ૪ʹ͍ͭ ͯ • ʢڈҐʣʮHHVM͕ઌ佃ΛΓPHP5.xͷഒ ʹʂʯʢΦΦʔʂ • zend͕ຊؾΛग़ͯ͠ɺPHP7Ͱ͍͍ͭ ͨ • HHVMҾ͖༷͢ʹؤுͬͯΔ • ʮ݂Ͱ݂Λચ͏ϕϯν߹ઓʯ
Slide 137
Slide 137 text
ʮͲ͕͍ͬͪͷ͔ʁʯ • PHP7 stable·ͩग़ͯͳ͍ͷͰͳ… • άάΔͱେྔͷαϯϓϧ͕ग़ͯ͘Δ • ߴԽͷख๏͕ҧ͏ͷͰέʔεόΠέʔε • ʮࣗͷίʔυʯͰࢼ͞ͳ͍ͱԿͱݴ͑ͳ͍
Slide 138
Slide 138 text
ϕϯνϚʔΫɾϓϩύΨϯμ • ͍ΖΜͳਓ͕ʮ͕͍ͬͪ͜ʂʯͱ͍͍ͬͯΔ • ಄ͷάϥϑΛ࠶ܝࡌ
Slide 139
Slide 139 text
No content
Slide 140
Slide 140 text
No content
Slide 141
Slide 141 text
No content
Slide 142
Slide 142 text
No content
Slide 143
Slide 143 text
No content
Slide 144
Slide 144 text
No content
Slide 145
Slide 145 text
No content
Slide 146
Slide 146 text
ϓϩύΨϯμࢲײ • ʮϊϯνϡʔϯʯͩͱPHP7͕ଟগ͍ϕϯν ͕ଟ͍ • ʮνϡʔϯʯ͢ΔͱHHVM͍ • νϡʔϯͱɺHackԽɺawaitར༻ͳͲ • ·͋ɺPHP5.6͔ΒͷࠩΛݟΕେࠩͳ͍
Slide 147
Slide 147 text
ԶతʮͲͬͪΛ͏͖͔ʁʯ in 2015 • ։ൃຊ൪Linux͔ʁ • ͍͍͑ → PHP • ͍ → • ผʹʁ → PHP • HackΛ͍͍ͨ → HHVM
Slide 148
Slide 148 text
ʮຊՈPHPʯͷڧ͞ • HHVM͕PHPʹ͋ΘͤͯɺPHP͕HHVMʹ߹ ΘͤΔٛཧͳ͍ • ʢ͍͍ॴ͚ͩύΫΔ࢟ • ֤छπʔϧɺIDEɺC֦ுຊՈ͕ୈҰ • Hack·ͩPHPStormͷαϙʔτແ͍ʢࠓ ޙʁʁʣ • ࠓޙͷ֤σΟετϦඪ४ຊՈPHPͩΖ͏
Slide 149
Slide 149 text
HHVMͷʢݱঢ়ͷʣඍົ͞ • OSXͰʢࠓݱࡏʣϏϧυͰ͖ͳ͍ʢաڈͰ ͖ͨʣ https://github.com/facebook/hhvm/issues/ 5447 ʢBrewͱ͔ʹஆ͔͘ͳ͍ʣ • LinuxͰɺϏϧυ໘ʢಛʹCentOSʣ • UbuntuόΠφϦ༗Γ • ʮHackΛ͏ʯͱɺྲّྀ͕PHPͱҧ͍͗͢Δ
Slide 150
Slide 150 text
ͭ·Γ • ʮ·͋ɺຊՈPHPΛ͔͓ͭ͏ʯ • ͔͠͠·ͩ·ͩྲྀಈత • Hack͕IDEαϙʔτ͡·ͬͨΒ͏͔ʂ
Slide 151
Slide 151 text
ҰԠɺHackͷΞπ͞ • Hack language • asyncʢMysqlmemcacheʣ • Generics • Type Aliasing • ==> Ͱλ • Type check جຊඞਢ http://docs.hhvm.com/manual/en/ install.hack.bootstrapping.php
Slide 152
Slide 152 text
HackΛΒͳ͍ਓ͚ɺ==> ʹ͍ͭ ͚ͯͩαϯϓϧ $a + $b; } $f = l(); echo $f(2); // => 3 • ΦγϟϨͩ͠ɺʢΑ͘σΟεΒΕΔʣuse͕ෆ ཁ
Slide 153
Slide 153 text
ૉͳPHPͰॻ͘ͱ͜͏͍͏ίʔυ 3
Slide 154
Slide 154 text
ͱ͜ΖͰɺPHP7Ͱʁ 3 • ※rc1Ͱuse۟ͷܕએݴ͏͔ͣ͝…
Slide 155
Slide 155 text
HHVMͷະདྷͲͬͪͩ • ެࣜͳະདྷ͋·Γݟ͑ͳ͍ʁʢPHPRFCΛ ݟΔͱ͔…ʣ • ͜ͷ··ͰϕλʔPHPͱͯ͠ͷ࠲͕ة͏͍ • Ͱ͞ΒʹҾ͖͢ͷ͔ʁ • OSXͰHHVM͕͔ͭ͑ΔΑ͏ʹͯ͠΄͍͠ • xhpͳͲͷ֦ுͰReactͳͲͷJSͱྑ͘ͱ͔ ͷະདྷʁ
Slide 156
Slide 156 text
͍
Slide 157
Slide 157 text
㙽ʹ֯ • Έͳ͞ΜPHP͔͍͖ͭͬͯ·͠ΐ͏ • PHPਐԽΛ͚͍ͭͮͯ·͢ • ͜Θ͘ͳ͍Α! • Ζ͏ʂPHPʂʂʂʂ