Slide 1

Slide 1 text

Sapporo.php PHP5.5 ͍ͭ΍Δ͔ʁ ࠓͰ͠ΐʂ ΦʔϓϯιʔεΧϯϑΝϨϯε2013 ๺ւಓ ࠤ౻ Ղ༞ ( Sapporo.php )

Slide 2

Slide 2 text

͋ͨΒ͍͠1)1ͷ৘ใʹৄ͍͠ɻ ࠤ౻Ղ༞ઌੜʢҰൠࣾஂ๏ਓ-0$"-ʣ

Slide 3

Slide 3 text

͓Θͼ ࠷ॳ͸ʮPHP5.5 Updateʯ͍ͬͯ͏λΠτϧͰ ΍Δ༧ఆͩͬͨΜͰ͚͢Ͳɺʮ΋͏গ͠ώΩ͕ ͋Δ΄͏͕͍͍ʯͱݴΘΕ·ͯ͠ɺ͍΍͍΍ PHP5.5 ͷ࿩ʹʮͻ͖ʯͬͯݴΘΕ·ͯ͠΋... Έ͍ͨͳײ͡ͰͱΓ͋͑ͣྲྀߦʢ஗Εʣʹͷͬ ͯΈͨͱ͜ΖͰݩωλͦΕ΄Ͳৄ͘͠ͳ͍ͷͰ ͍ͭ΋Ͳ͓Γਐߦ͠·(ུ

Slide 4

Slide 4 text

͓Θͼ ͪΐͬͱඓ੠ + ࡢ೔༡ͼա͗Ͱ੠͕͓͔͍͠Ͱ ͢ɻฉ͖औΓʹ͍࣌͘͸ԕྀແ͘ฉ͖ฦͯ͘͠ ͍ͩ͞ɻ͝ΊΜͳ͍͞ɻ΄Μͱɺ͝ΊΜͳ͞ ͍ɻ

Slide 5

Slide 5 text

ࠤ౻Ղ༞ ๺ւಓ۴࿏ொग़਎ɺ౦ژ౎ࡏॅ ೥݄೔ੜ !SJBG GCNFTBUPLFJTVLF Ұൠࣾஂ๏ਓ-0$"- ೔ຊ1)1Ϣʔβʔձ

Slide 6

Slide 6 text

PHP ͱ΅͘ •ߴߍͷࠒ͔Β͞Θ͍ͬͯΔͷͰͳʹ͛ ʹ 10 ೥Ҏ্... •Openpear ͱ͔ͭ͘Γ·ͨ͠ •Xoops, Ethna, rhaco, Symfony, ...

Slide 7

Slide 7 text

Today

Slide 8

Slide 8 text

͋Εɻ͍ͪ͹Μͷཪ൪૊ͳͷͰ͸ʁ

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

ͪͳΈʹࠓ౦ژͰ͸ • MySQL Admin͕ݟͨDevsͷৗࣝɺDBA͸ඇৗࣝ • 15෼Ͱग़དྷΔPHPͱJavaScript MVCϑϨʔϜϫʔΫ Ͱ࡞ΔϓϩτλΠϓ • PHP 5.5ωʔςΟϒΩϟογϡͷ࿩ • ϑϩϯτΤϯυ੍࡞޲͚ϏϧυπʔϧGruntΛPHP όοΫΤϯυ։ൃͰར༻͢Δ • PHP։ൃऀͷͨΊͷΫϥ΢υ؀ڥ -ೖ໳ฤ-

Slide 11

Slide 11 text

Agenda •PHP ͷΞοϓσʔτ৘ใ •Composer / Packagist •PSR, php-fig ٧ΊࠐΈ͗ͯ͢આ໌͚ͩʹͳͬͯ͠·͍ͦ͏Ͱ͢ ୀ۶͔΋͠Εͳ͍Ͱ͕͢ɺ͝ΊΜͳ͍͞ɻ

Slide 12

Slide 12 text

ͬͦ͘͞Ͱ͕͢

Slide 13

Slide 13 text

͋ͳ͕͓ͨ࢖͍ͷ1)1ͷόʔδϣϯ͸ʁ php -v

Slide 14

Slide 14 text

4.* 5.0.* 5.1.* 5.2.*

Slide 15

Slide 15 text

͢ͰʹηΩϡϦςΟαϙʔτ΋ ऴ͍ྃͯ͠·͢ɻ ࠓ͙͢ʹΞοϓσʔτ͠·͠ΐ͏ɻ ͍ͭ΍Δ͔ʁ ΋͏͓ͤʔΑʂ

Slide 16

Slide 16 text

5.3.*

Slide 17

Slide 17 text

࣮͸ php5.3 ΋དྷ೥6݄Ͱαϙʔτऴྃ͠·͢ 7݄ʹϦϦʔε͞ΕͨPHP 5.3.27 ͕ 5.3 ܥ࠷ޙ ͷ௨ৗΞοϓσʔτͱͳΓɺαϙʔτऴྃ· ͰηΩϡϦςΟରԠ͔͠ߦΘΕ·ͤΜɻ

Slide 18

Slide 18 text

ͭ·Γɺphp5.5 ΁ͷΞοϓσʔ τΛߟ͑ΔλΠϛϯά͸·͞ʹ

Slide 19

Slide 19 text

ͭ·Γɺphp5.5 ΁ͷΞοϓσʔ τΛߟ͑ΔλΠϛϯά͸·͞ʹ ࠓ

Slide 20

Slide 20 text

͍΍͍΍ɺͦ͏͸ݴͬͯ΋ݱঢ়ಈ͍ͯΔ͠Ͷ͐...ʁ ͱࢥͬͨ ͦ͜ͷ͋ͳͨʂ

Slide 21

Slide 21 text

ڈ೥ • CGI ϞʔυͰಈ࡞͢Δ PHP ʹίϚϯυϥΠϯ Φϓγϣϯ͕ΫΤϦετϦϯάͰࢦఆͰ͖ͯ ͠·͏੬ऑੑ͕ • .../hoge.php?-s • ιʔείʔυ͕γϯλοΫεϋΠϥΠτ͞Ε ͯݟ͑ͪΌ͍ͬͯͨ • ͪͳΈʹ Facebook ʹ -s ͚ͭͯΞΫηε͢Δͱٻਓ৘ใͷ URL ͕࢓ ࠐ·Εͨ php ίʔυΛදࣔͯ͠·ͨ͠ɻ

Slide 22

Slide 22 text

ͦͷ΄͔ʹ΋ wDSZQUͷόά wSBTNVT w)551ϔομΠϯδΣΫγϣϯ Ҏ લͷIFBEFSؔ਺ wIBTIEPT ·͋͜Ε͸ઃఆͷ໰୊ wͳͲͳͲ

Slide 23

Slide 23 text

PHP ͕໰୊ʹͳΔέʔεɺ ͦΕͳΓʹ͋Γ·͢ɻ

Slide 24

Slide 24 text

࠷௿Ͱ΋ • 5.3.2 ͱ͔ɺத్൒୺ͳόʔδϣϯΛ࢖Θͣ ʹɺ࠷৽όʔδϣϯ (5.3.27) ͱ͔ɺϚΠφʔΞ οϓσʔτ͸͢΂ͯద༻͓ͯ͘͠ • Ͳ͏ͯ͠΋ݹ͍όʔδϣϯ͕ඞཁͳͱ͖͸ɺ ͲͷΑ͏ͳ໰୊Λ๊͍͑ͯΔͷ͔೺Ѳ͢Δ ʢ໰୊͕ൃੜ͢ΔͳΒमਖ਼͢Δʣ

Slide 25

Slide 25 text

PHP 5.4 ͷ͓͞Β͍

Slide 26

Slide 26 text

PHP 5.3 ͷ͓͞Β͍ ͦͷ·͑ʹɺ͚ͩ͢͜͠

Slide 27

Slide 27 text

5.3 ͷ৽ػೳ •໊લۭؒ •஗Ԇ੩తଋറ •goto... •ωΠςΟϒΫϩʔδϟʢແ໊ؔ਺ʣ •__callStaticɺ__invoke ϚδοΫϝιο υͷ௥Ճ

Slide 28

Slide 28 text

5.3 ͷ৽ػೳ •Nowdoc •Ϋϥε֎Ͱͷ const Ωʔϫʔυ •?: ʢࡾ߲ԋࢉࢠͷ୹ॖʣ •੩తϝιουʹಈతΞΫηεʢ$a::$b) •ྫ֎ͷωετ

Slide 29

Slide 29 text

৽ػೳ͚ͩͰ੝Γͩ͘͞Μ

Slide 30

Slide 30 text

5.3 ͦͷଞʹ΋ •52 ͷ৽͍ؔ͠਺ •18 ͷ৽͍͠ύϥϝʔλରԠͷؔ਺ •18 ͷ৽͍͠ϝιου •18 ͷ৽͍͠Ϋϥε

Slide 31

Slide 31 text

PHP 5.4 ͷ͓͞Β͍

Slide 32

Slide 32 text

5.4 ͷ৽ػೳ •τϨΠτ •഑ྻͷ୹ॖߏจ •= ͕ৗʹ༗ޮʹ •foo()[1] •(new Foo)->bar() •built-in webserver

Slide 33

Slide 33 text

ηʔϑϞʔυͷഇࢭ • 5.3 ͔Βඇਪ঑Ͱͨ͠

Slide 34

Slide 34 text

ϚδοΫΫΦʔτͷഇࢭ • 5.3 ͔Βඇਪ঑Ͱͨ͠ • ͪΌΜͱΤεέʔϓ͠·͠ΐ͏Ͷ

Slide 35

Slide 35 text

register_globals ഇࢭ • ࠓߋ࢖ͬͯͳ͍ͱ͸͓΋͍·͕͢ɻ • register_long_arrays ΋ഇࢭ͞Εͯ·͢ɻ • $_HTTP_*_VARS తͳ΍ͭ • extract($_REQUEST) ͢ΓΌ͍͍ͬͯ͜ͱͰ͸ ͳ͍Ͱ͢Αɻ͖ͪͬͱѻ͍·͠ΐ͏Ͷɻ

Slide 36

Slide 36 text

Call-time pass-by-reference ഇࢭ • ݺͼग़࣌͠ͷࢀর౉͠ • foo(&$bar)

Slide 37

Slide 37 text

date.timezone ઃఆඞਢ • TZ ؀ڥม਺Λࢀর͠ͳ͘ͳͬͨ • date_default_timezone_set() • ઃఆ͠ͳ͍ͱ UTC ʹͳͬͯ Warning ͕ൃੜ

Slide 38

Slide 38 text

5.4 Ͱ͸ɺ·ͱ΋ͳਐԽ͕ɻ

Slide 39

Slide 39 text

᠘ • apc ͕ΠϚΠν • ฐࣾαʔϏε΋Α͘ apc ͷ͍ͤͰίέ·͢ • OPcache Λ࢖͏ͱ҆ఆͦ͠͏ͳ༧ײ • ςετ؀ڥͰ͸໰୊ͳ͘ಈ͍͍ͯΔ • ·ͩ production ʹ͸͍Εͯ·ͤΜ • ͋ͱͰ·ͨઆ໌͠·͢Ͷ

Slide 40

Slide 40 text

ͯ͞ɺ5.5 Ͱ͸

Slide 41

Slide 41 text

5.5 ͷ৽ػೳ

Slide 42

Slide 42 text

δΣωϨʔλͷ௥Ճ • yield Ωʔϫʔυ

Slide 43

Slide 43 text

finally Ωʔϫʔυͷ௥Ճ • ԿΛ͍·͞Β... • try .. catch .. finally

Slide 44

Slide 44 text

password_* ؔ਺ • ύεϫʔυͷѻ͍Λ؆୯ʹ • ݱࡏ͸ bcrypt ͷΈରԠ

Slide 45

Slide 45 text

foreach now support list()

Slide 46

Slide 46 text

empty ͕೚ҙͷࣜʹରԠ • ͡Έʹ͏Ε͍͠

Slide 47

Slide 47 text

array, string ͷσϦϑΝϨϯε

Slide 48

Slide 48 text

::class • ClassName::class Ͱ namespace ΛؚΉΫϥε ໊ΛऔಘͰ͖ΔΑ͏ʹ

Slide 49

Slide 49 text

OPcache extension • Zend Optimizer+ ͷΦϖίʔυΩϟογϡ • ΋ͱ΋ͱ༗ྉͰఏڙ͞Εͯͨ΍ͭͰ͢ • ։ൃ൛Ͱ͸ apc ΑΓ਺% ʙ 20 % ΄Ͳߴ଎ • apc ͸ 5.5 ޲͚ʹ͸ఏڙ͞Ε͍ͯ·ͤΜ • apc_store, apc_fetch ͳͲͷ KVS ػೳ͚ͩ Λఏڙ͢Δ apcu extension ͕͋Γ·͢

Slide 50

Slide 50 text

ͦͷଞ • foreach ͕ඇεΧϥʔͷΩʔʹରԠ • ωΠςΟϒͷ഑ྻ͸εΧϥʔͷΈ • Iterator::key() ͕೚ҙͷ஋ΛฦͤΔ • Apache 2.4 ϋϯυϥ͕ Windows ʹରԠ • GD ͷվྑ

Slide 51

Slide 51 text

มߋ఺ϐοΫΞοϓ

Slide 52

Slide 52 text

Deprecated • preg_replace ͷ /e म০ࢠ • ͔ΘΓʹ preg_replace_callback Λ • ҙ֎ͱϋϚΓͲ͜ΖɻErrorException Ͱɻ • ext/mysql extension • ͔ΘΓʹ mysqli ͔ pdo_mysql Λ

Slide 53

Slide 53 text

ͦͷଞ • Windows XP / 2003 ͷαϙʔτऴྃ • pack / unpack ͷԼҐޓ׵ੑͷͳ͍มߋ

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

Composer • PHP 5.3.2 ͔Β࢖͑Δύοέʔδ؅ཧπʔϧ • Ruby Ͱ͍͏ Bundler, node Ͱ͍͏ npm త ͳ΍ͭ • composer.json / autoload.php • Symfony, Zend Framework, PHPUnit, ... • git ͸ඞਢ͔΋ɻ • ϩΰ͕͍ͩ͞

Slide 56

Slide 56 text

Packagist • Composer ඪ४ϦϙδτϦ • ͩΕͰ΋ొ࿥Ͱ͖·͢ • 15,000 ύοέʔδҎ্ʂ • PEAR ͸ 600 ऑ • ೦ئͷύοέʔδ਺ʂ

Slide 57

Slide 57 text

PSR php-fig

Slide 58

Slide 58 text

PSR • ༗໊ϑϨʔϜϫʔΫ࡞ऀͨͪͰߏ੒͞ΕΔ php-fig ͕ࡦఆ͍ͯ͠ΔίʔσΟϯάن໿ • ͦΕͧΕͷϑϨʔϜϫʔΫͰͦΕͧΕͷίʔ σΟϯάن໿Λ࡞Βͣʹɺ౷ҰͷίʔσΟϯ άن໿ʹ͠·͠ΐ͏ɻͱ͍͏͓͸ͳ͠

Slide 59

Slide 59 text

php-fig members "HBWJ %BWJE;ÛMLF !E[VFMLF "NB[PO8FC4FSWJDFT4%, 3ZBO1BSNBO !4LZ[ZY "QBDIFMPHQIQ *WBO)BCVOFL !JIBCVOFL "TTFUJDBOE#V[[ ,SJT8BMMTNJUI !LSJTXBMMTNJUI "VSB1SPKFDUBOE4PMBS'SBNFXPSL 1BVM.+POFT !QNKPOFT $BLF1)1 -BSSZ.BTUFST !1IQ/VU $PNQPTFSBOE1BDLBHJTU +PSEJ#PHHJBOP !TFMEBFL %PDUSJOF (VJMIFSNF#MBODP !HVJMIFSNFCMBODP %SVQBM -BSSZ(BSpFME !$SFMM F;1VCMJTI "OESF3PNDLF !BOESFSPN 5:10'MPX ,BSTUFO%BNCFLBMOT !LEBNCFLBMOT +BDLBMPQF -VLBT,BIXF4NJUI !MTNJUI +PPNMB %PO(JMCFSU !EJMCFSUMJGF -BSBWFM 5BZMPS0UXFMM !UBZMPSPUXFMM -JUIJVN /BUF"CFMF !OBUFBCFMF 1&"3 #SFUU#JFCFS !TBMUZCFBHMF QIQ## /JMT"EFSNBOO !OBEFSNBO QIQ%PDVNFOUPS .JLFWBO3JFM !NWSJFM 11* 1BVM%SBHPPOJT !ESHPPOJT 1SPQFM 8JMMJBN%VSBOE !DPVBD 1ZSP$.4 1IJM4UVSHFPO !QIJMTUVSHFPO 4BCSF%"7 &WFSU1PU !FWFSUQ 4VHBS$3. +PIO.FSUJD !KNFSUJD 4ZNGPOZ 'BCJFO1PUFODJFS !GBCQPU 5IFDPNNVOJUZBUMBSHF $BM&WBOT !$BM&WBOT ;FOE'SBNFXPSL 1ÂESBJD#SBEZ !QBESBJDC ;JLVMB ,BSNB%PSESBL ![JLVMBESBL

Slide 60

Slide 60 text

PSR • PSR-0 • ϑΝΠϧ໊ͱΫϥε໊ͷن໿ • PSR-1 • ίʔσΟϯάن໿ • PSR-2 • ίʔσΟϯάελΠϧن໿ • PSR-3 • ϩΨʔͷΠϯλϑΣʔεن໿

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

Sapporo.php • PHP ๺ւಓ with LOCAL • LOCAL PHP෦ • sapporo-php.net • 2 ϲ݄ʹҰ౓͘Β͍ษڧձ౳

Slide 63

Slide 63 text

ຊ೔ͷ·ͱΊ • php5.3 Ҏલͷόʔδϣϯ͸΋͏ݹ͍ • φ΢͍ύοέʔδґଘ؅ཧ͸ Composer • ͦͯ͠ Packagist ͰͲΜͲΜެ։ • ίʔσΟϯάن໿͸ PSR Ͱ • ೔ຊޠ༁͸ Infinite loop ͞Μ

Slide 64

Slide 64 text

Any question ? • ʮྑ͍࣭໰Ͱ͢Ͷʯ͕ग़Δͱ PHP Matsuri Tγ ϟπ͋͛·͢ • ྑ͍࣭໰͗͢Δͱ๻͕౴͑ΒΕͳ͍Մೳੑ͕ ͋Γ·͢

Slide 65

Slide 65 text

いつ終わるか? 今でしょ! ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ Sapporo.php