2019/10/30 PHP勉強会@東京で話したスライドです。
ҙ֎ʹศརͩͬͨ2019/10/30 PHPษڧձ@౦ژલా ਓ
View Slide
ࣗݾհw લాਓw !DIJSPSVYYYYw 3PYY
w εϙϯαʔืूதͰ͢ʂʂ
ҙ֎ʹศརͩͬͨ
ʮʯҙ֎ʹศརͩͬͨ
1)1ʹ͓͚Δʮʯͭ͋Δ
ՄมݸҾؔfunction printArgs(...$inputs){echo $inputs[0]; // appleecho $inputs[1]; // bananaecho $inputs[2]; // chocolate}printArgs('apple', 'banana', 'chocolate');
ҾͷΞϯύοΫfunction printArgs($a, $b, $c){// (ུ)}$args = ['apple', 'banana', 'chocolate'];printArgs(...$args);
͍͕ͬͯͨʜw ػೳ͕ଘࡏ͢Δ͜ͱͬͯͨw Ͱ࣮ࡍશવͬͯͳ͔ͬͨw ΠϚΠν͍Ͳ͜Ζ͕Θ͔Βͳ͔ͬͨ ࠷ۙɺศརͳ͍ํΛݟ͚ͭͨ
ྫw ࣗͰఆٛͨ͠4UBUVTΫϥε͕͋Δw 4UBUVTΛෳѻ͏Ϋϥε͕΄͍͠w ྻΛϥοϓͨ͠Ϋϥεw ཁ݅ҎԼw ҙͷͷ4UBUVTΠϯελϯεΛཁૉʹ࣋ͭw 4UBUVTΠϯελϯεҎ֎Λཁૉʹ͍͚࣋ͬͯͳ͍w Ωʔ࿈൪ͷΈʹ͢Δ ࿈ྻʹ͠ͳ͍
·ͣී௨ʹ࣮͠·͢
ී௨ͷ࣮class StatusCollection{private $items;public function __construct(array $items){$this->items = $items;}}$items = [Status::random(), Status::random(), Status::random()];new StatusCollection($items);
ී௨ͷ࣮class StatusCollection{private $items;public function __construct(array $items){foreach ($items as $item) {if (!$item instanceof Status) {throw new InvalidArgumentException();}}$this->items = $items;}}$items = [Status::random(), Status::random(), Status::random()];new StatusCollection($items);
ී௨ͷ࣮class StatusCollection{private $items;public function __construct(array $items){foreach ($items as $item) {if (!$item instanceof Status) {throw new InvalidArgumentException();}}$this->items = array_values($items);}}$items = [Status::random(), Status::random(), Status::random()];new StatusCollection($items);
Λ͍͖ͬͯ·͢ʂ
Λ࣮ͬͨclass StatusCollection{private $items;public function __construct(...$items){foreach ($items as $item) {if (!$item instanceof Status) {throw new InvalidArgumentException();}}$this->items = $items;}}$items = [Status::random(), Status::random(), Status::random()];new StatusCollection(...$items);
Λ࣮ͬͨclass StatusCollection{private $items;public function __construct(Status ...$items){$this->items = $items;}}$items = [Status::random(), Status::random(), Status::random()];new StatusCollection(...$items);
ศརʂʂ
·ͱΊw ʮʯΛ͏ͱҎԼͷέʔεͰϥΫʹͳΔw ྻͷΩʔʹ͍ͭͯߟ͑ͨ͘ͳ͍ͱ͖w ྻͷཁૉͷܕΛറΓ͍ͨͱ͖