Slide 1

Slide 1 text

ܕΛҙࣝͨ͠ 1)1ΞϓϦέʔγϣϯ։ൃ ɹ!shin1x1 2017//08 phpcon 2017

Slide 2

Slide 2 text

https://php-genba.shin1x1.com/

Slide 3

Slide 3 text

D .BTBTIJ4IJOCBSB!TIJOY ΞδΣϯμ w1)1ͷܕγεςϜ wܕએݴΛར༻ͨ͠ίʔυ࣮૷ wυϝΠϯಛԽܕͷ࣮૷5JQT w͍͞͝ʹ

Slide 4

Slide 4 text

1)1ͷܕγεςϜ

Slide 5

Slide 5 text

&MPRVFOU 3FQPTJUPSZ $foo = 123; echo gettype($foo), PHP_EOL; => integer $foo = 'Hello'; echo gettype($foo), PHP_EOL; => string $foo = [1, 2, 3]; echo gettype($foo), PHP_EOL; => array ม਺͸ܕΛ࣋ͨͳ͍ɺ஋͕ܕΛ࣋ͭ

Slide 6

Slide 6 text

&MPRVFOU 3FQPTJUPSZ echo 10 + 5, PHP_EOL; => 15 ୅਺ԋࢉࢠ͸JOUܕͱqPBUܕ͕ର৅ ҉໧తܕม׵

Slide 7

Slide 7 text

&MPRVFOU 3FQPTJUPSZ echo 10 + "5", PHP_EOL; => 15 TUSJOH͕JOUʹม׵͞ΕΔ ҉໧తܕม׵

Slide 8

Slide 8 text

&MPRVFOU 3FQPTJUPSZ echo 10 + "5e", PHP_EOL; => 15 ҉໧తܕม׵

Slide 9

Slide 9 text

&MPRVFOU 3FQPTJUPSZ echo 10 + "5e2", PHP_EOL; => ??? ҉໧తܕม׵

Slide 10

Slide 10 text

&MPRVFOU 3FQPTJUPSZ echo 10 + "5e2", PHP_EOL; => 510 ҉໧తܕม׵

Slide 11

Slide 11 text

&MPRVFOU 3FQPTJUPSZ 5e2 ʢ5=Ծ਺෦, 2=ࢦ਺෦, 10=ج਺ʣ => 5 * (10 ** 2) => 500 ˞ࢦ਺දه

Slide 12

Slide 12 text

&MPRVFOU 3FQPTJUPSZ

Slide 13

Slide 13 text

D .BTBTIJ4IJOCBSB!TIJOY 1)1ͷܕγεςϜ w஋͕ܕΛ࣋ͭ w҉໧తܕม׵Ͱॊೈʹ։ൃ wܕએݴͰݫີʹ։ൃ wϢʔβ͕ελΠϧΛબ୒Ͱ͖Δ

Slide 14

Slide 14 text

ܕΛ׆༻ͨ͠1)1ίʔυͷ࣮૷

Slide 15

Slide 15 text

D .BTBTIJ4IJOCBSB!TIJOY FY੫ࠐΈՁ֨ͷࢉग़ w঎඼Ձ֨ ফඅ੫཰ 
 খ਺఺ҎԼ͸੾Γࣺͯ w঎඼Ձ֨͸ਖ਼ͷ੔਺ wফඅ੫཰͸খ਺ͱ͢Δʢʣ

Slide 16

Slide 16 text

D .BTBTIJ4IJOCBSB!TIJOY %FNP wܕએݴແ͠ wεΧϥʔܕͰܕએݴ wϢʔβఆٛܕͰܕએݴ

Slide 17

Slide 17 text

D .BTBTIJ4IJOCBSB!TIJOY %FNP https://github.com/shin1x1/phpcon2017

Slide 18

Slide 18 text

D .BTBTIJ4IJOCBSB!TIJOY υϝΠϯʹಛԽͨ͠ܕΛ࡞Δ wΞϓϦέʔγϣϯυϝΠϯΛදݱ wυϝΠϯϧʔϧΛݕূ wܕએݴʹΑΔදݱͱڧ੍

Slide 19

Slide 19 text

&MPRVFOU 3FQPTJUPSZ // ܕએݴແ͠ function calculate($price, $taxRate) // υϝΠϯಛԽܕͰܕએݴ function calculate( Price $price, TaxRate $taxRate): PriceWithTax

Slide 20

Slide 20 text

υϝΠϯಛԽܕͷ࣮૷5JQT

Slide 21

Slide 21 text

D .BTBTIJ4IJOCBSB!TIJOY ҆қʹܧঝΛ࢖Θͳ͍ wܧঝݩΫϥεܕ΁ͷద߹Λ๷͙ wܧঝݩϝιουؚ͕·Εͯ͠·͏ wҕৡ΍τϨΠτͰڞ༗

Slide 22

Slide 22 text

&MPRVFOU 3FQPTJUPSZ // ܧঝ final class PriceWithTax extends Price {} ܧঝ $price = PriceWithTaxCalculator::calculate($price, $taxRate); // PriceWithTax ΋ Price ܕͳͷͰಈ͍ͯ͠·͏ $price = PriceWithTaxCalculator::calculate($price, $taxRate);

Slide 23

Slide 23 text

D .BTBTIJ4IJOCBSB!TIJOY Πϛϡʔλϒϧʹ͢Δͱ҆શ w׬શίϯετϥΫλ wෆม৚݅ݕূ͕Ұ౓ͰࡁΉ wϛϡʔλϒϧͳΒ౎౓ݕূ

Slide 24

Slide 24 text

D .BTBTIJ4IJOCBSB!TIJOY ϑΝΫτϦϝιου wίϯετϥΫλΛQSJWBUF wϑΝΫτϦϝιου wҾ਺ʹΑΔόϦΤʔγϣϯ

Slide 25

Slide 25 text

&MPRVFOU 3FQPTJUPSZ ϑΝΫτϦϝιου public static function of(float $value): self { return new self($value); } public static function ofByInt(int $value): self { return new self($value / 100); }

Slide 26

Slide 26 text

&MPRVFOU 3FQPTJUPSZ ϑΝΫτϦϝιου // float TaxRate::of(0.08); // int TaxRate::ofByInt(8);

Slide 27

Slide 27 text

D .BTBTIJ4IJOCBSB!TIJOY ։ൃͰͷܕݕࠪ wࣗಈςετ$* w1IQ4UPSN w1IBO

Slide 28

Slide 28 text

D .BTBTIJ4IJOCBSB!TIJOY 1IQ4UPSN wΤσΟλ
 ϦΞϧλΠϜͳνΣοΫ w*OTQFDU$PEFT
 ϓϩδΣΫτશମΛҰׅνΣοΫ w6TBHFTPG
 ܕͷར༻ҰཡΛྻڍ

Slide 29

Slide 29 text

D .BTBTIJ4IJOCBSB!TIJOY 1IBO w1)1Ͱ࣮૷͞Εͨ$-*πʔϧ wܕෆҰக΍TUSJDUҧ൓ͳͲΛݕ஌ w$*Ͱܕݕࠪ https://github.com/phan/phan

Slide 30

Slide 30 text

͍͞͝ʹ

Slide 31

Slide 31 text

wܕએݴͰܕΛڧ੍ wυϝΠϯΛܕͰදݱ wܕͰؾ͍͍࣋ͪ։ൃΛ D .BTBTIJ4IJOCBSB!TIJOY ܕΛ׆༻ͨ͠։ൃ

Slide 32

Slide 32 text

D .BTBTIJ4IJOCBSB!TIJOY !TIJOY !TIJOY D .BTBTIJ4IJOCBSB!TIJOY