Upgrade to Pro — share decks privately, control downloads, hide ads and more …

...意外に便利だった!!

chiroruxx
October 30, 2019

 ...意外に便利だった!!

2019/10/30 PHP勉強会@東京で話したスライドです。

chiroruxx

October 30, 2019
Tweet

More Decks by chiroruxx

Other Decks in Technology

Transcript

  1. ҙ֎ʹศརͩͬͨ
    2019/10/30 PHPษڧձ@౦ژ
    લా ࿨ਓ

    View Slide

  2. ࣗݾ঺հ
    w લా࿨ਓ
    w !DIJSPSVYYYY
    w 3PYY

    View Slide

  3. w εϙϯαʔืूதͰ͢ʂʂ

    View Slide

  4. ҙ֎ʹศརͩͬͨ

    View Slide

  5. ʮʯҙ֎ʹศརͩͬͨ

    View Slide

  6. 1)1ʹ͓͚Δʮʯ
    ͭ͋Δ

    View Slide

  7. ՄมݸҾ਺ؔ਺
    function printArgs(...$inputs)
    {
    echo $inputs[0]; // apple
    echo $inputs[1]; // banana
    echo $inputs[2]; // chocolate
    }
    printArgs('apple', 'banana', 'chocolate');

    View Slide

  8. Ҿ਺ͷΞϯύοΫ
    function printArgs($a, $b, $c)
    {
    // (ུ)
    }
    $args = ['apple', 'banana', 'chocolate'];
    printArgs(...$args);

    View Slide

  9. ஌ͬͯ͸͍͕ͨʜ
    w ػೳ͕ଘࡏ͢Δ͜ͱ͸஌ͬͯͨ
    w Ͱ΋࣮ࡍ͸શવ࢖ͬͯͳ͔ͬͨ
    w ΠϚΠν࢖͍Ͳ͜Ζ͕Θ͔Βͳ͔ͬͨ
    ‎ ࠷ۙɺศརͳ࢖͍ํΛݟ͚ͭͨ

    View Slide

  10. ྫ୊
    w ࣗ෼Ͱఆٛͨ͠4UBUVTΫϥε͕͋Δ
    w 4UBUVTΛෳ਺ѻ͏Ϋϥε͕΄͍͠
    w ഑ྻΛϥοϓͨ͠Ϋϥε
    w ཁ݅͸ҎԼ
    w ೚ҙͷ਺ͷ4UBUVTΠϯελϯεΛཁૉʹ࣋ͭ
    w 4UBUVTΠϯελϯεҎ֎Λཁૉʹ࣋ͬͯ͸͍͚ͳ͍
    w Ωʔ͸࿈൪ͷΈʹ͢Δ ࿈૝഑ྻʹ͠ͳ͍

    View Slide

  11. ·ͣ͸ී௨ʹ࣮૷͠·͢

    View Slide

  12. ී௨ͷ࣮૷
    class StatusCollection
    {
    private $items;
    public function __construct(array $items)
    {
    $this->items = $items;
    }
    }
    $items = [Status::random(), Status::random(), Status::random()];
    new StatusCollection($items);

    View Slide

  13. ී௨ͷ࣮૷
    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);

    View Slide

  14. ී௨ͷ࣮૷
    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);

    View Slide

  15. Λ࢖͍͖ͬͯ·͢ʂ

    View Slide

  16. Λ࢖࣮ͬͨ૷
    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);

    View Slide

  17. Λ࢖࣮ͬͨ૷
    class StatusCollection
    {
    private $items;
    public function __construct(Status ...$items)
    {
    $this->items = $items;
    }
    }
    $items = [Status::random(), Status::random(), Status::random()];
    new StatusCollection(...$items);

    View Slide

  18. ศརʂʂ

    View Slide

  19. ·ͱΊ
    w ʮʯΛ࢖͏ͱҎԼͷέʔεͰϥΫʹͳΔ
    w ഑ྻͷΩʔʹ͍ͭͯߟ͑ͨ͘ͳ͍ͱ͖
    w ഑ྻͷཁૉͷܕΛറΓ͍ͨͱ͖

    View Slide