2017/10/08 PHPカンファレンス2017 https://github.com/shin1x1/phpcon2017
ܕΛҙࣝͨ͠1)1ΞϓϦέʔγϣϯ։ൃɹ!shin1x12017//08 phpcon 2017
View Slide
https://php-genba.shin1x1.com/
D.BTBTIJ4IJOCBSB!TIJOYΞδΣϯμw1)1ͷܕγεςϜwܕએݴΛར༻ͨ͠ίʔυ࣮wυϝΠϯಛԽܕͷ࣮5JQTw͍͞͝ʹ
1)1ͷܕγεςϜ
&MPRVFOU3FQPTJUPSZ$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มܕΛ࣋ͨͳ͍ɺ͕ܕΛ࣋ͭ
&MPRVFOU3FQPTJUPSZecho 10 + 5, PHP_EOL;=> 15ԋࢉࢠJOUܕͱqPBUܕ͕ର҉తܕม
&MPRVFOU3FQPTJUPSZecho 10 + "5", PHP_EOL;=> 15TUSJOH͕JOUʹม͞ΕΔ҉తܕม
&MPRVFOU3FQPTJUPSZecho 10 + "5e", PHP_EOL;=> 15҉తܕม
&MPRVFOU3FQPTJUPSZecho 10 + "5e2", PHP_EOL;=> ???҉తܕม
&MPRVFOU3FQPTJUPSZecho 10 + "5e2", PHP_EOL;=> 510҉తܕม
&MPRVFOU3FQPTJUPSZ5e2ʢ5=Ծ෦, 2=ࢦ෦, 10=جʣ=> 5 * (10 ** 2)=> 500˞ࢦදه
&MPRVFOU3FQPTJUPSZdeclare(strict_types=1);function double(int $i): int {return $i * 2;}double(1); // 2double(“5e”); // TypeErrorܕએݴ
D.BTBTIJ4IJOCBSB!TIJOY1)1ͷܕγεςϜw͕ܕΛ࣋ͭw҉తܕมͰॊೈʹ։ൃwܕએݴͰݫີʹ։ൃwϢʔβ͕ελΠϧΛબͰ͖Δ
ܕΛ׆༻ͨ͠1)1ίʔυͷ࣮
D.BTBTIJ4IJOCBSB!TIJOYFY੫ࠐΈՁ֨ͷࢉग़wՁ֨ ফඅ੫ খҎԼΓࣺͯwՁ֨ਖ਼ͷwফඅ੫খͱ͢Δʢʣ
D.BTBTIJ4IJOCBSB!TIJOY%FNPwܕએݴແ͠wεΧϥʔܕͰܕએݴwϢʔβఆٛܕͰܕએݴ
D.BTBTIJ4IJOCBSB!TIJOY%FNPhttps://github.com/shin1x1/phpcon2017
D.BTBTIJ4IJOCBSB!TIJOYυϝΠϯʹಛԽͨ͠ܕΛ࡞ΔwΞϓϦέʔγϣϯυϝΠϯΛදݱwυϝΠϯϧʔϧΛݕূwܕએݴʹΑΔදݱͱڧ੍
&MPRVFOU3FQPTJUPSZ// ܕએݴແ͠function calculate($price, $taxRate)// υϝΠϯಛԽܕͰܕએݴfunction calculate(Price $price, TaxRate $taxRate): PriceWithTax
υϝΠϯಛԽܕͷ࣮5JQT
D.BTBTIJ4IJOCBSB!TIJOY҆қʹܧঝΛΘͳ͍wܧঝݩΫϥεܕͷద߹Λ͙wܧঝݩϝιουؚ͕·Εͯ͠·͏wҕৡτϨΠτͰڞ༗
&MPRVFOU3FQPTJUPSZ// ܧঝfinal class PriceWithTax extends Price {}ܧঝ$price = PriceWithTaxCalculator::calculate($price, $taxRate);// PriceWithTax Price ܕͳͷͰಈ͍ͯ͠·͏$price = PriceWithTaxCalculator::calculate($price, $taxRate);
D.BTBTIJ4IJOCBSB!TIJOYΠϛϡʔλϒϧʹ͢Δͱ҆શwશίϯετϥΫλwෆม݅ݕূ͕ҰͰࡁΉwϛϡʔλϒϧͳΒݕূ
D.BTBTIJ4IJOCBSB!TIJOYϑΝΫτϦϝιουwίϯετϥΫλΛQSJWBUFwϑΝΫτϦϝιουwҾʹΑΔόϦΤʔγϣϯ
&MPRVFOU3FQPTJUPSZϑΝΫτϦϝιουpublic static function of(float $value): self{return new self($value);}public static function ofByInt(int $value): self{return new self($value / 100);}
&MPRVFOU3FQPTJUPSZϑΝΫτϦϝιου// floatTaxRate::of(0.08);// intTaxRate::ofByInt(8);
D.BTBTIJ4IJOCBSB!TIJOY։ൃͰͷܕݕࠪwࣗಈςετ$*w1IQ4UPSNw1IBO
D.BTBTIJ4IJOCBSB!TIJOY1IQ4UPSNwΤσΟλ ϦΞϧλΠϜͳνΣοΫw*OTQFDU$PEFT ϓϩδΣΫτશମΛҰׅνΣοΫw6TBHFTPG ܕͷར༻ҰཡΛྻڍ
D.BTBTIJ4IJOCBSB!TIJOY1IBOw1)1Ͱ࣮͞Εͨ$-*πʔϧwܕෆҰகTUSJDUҧͳͲΛݕw$*Ͱܕݕࠪhttps://github.com/phan/phan
͍͞͝ʹ
wܕએݴͰܕΛڧ੍wυϝΠϯΛܕͰදݱwܕͰؾ͍͍࣋ͪ։ൃΛD.BTBTIJ4IJOCBSB!TIJOYܕΛ׆༻ͨ͠։ൃ
D.BTBTIJ4IJOCBSB!TIJOY!TIJOY!TIJOYD.BTBTIJ4IJOCBSB!TIJOY