$30 off During Our Annual Pro Sale. View Details »

PHPのいいトコ・求めるもの怒涛の10選!!

 PHPのいいトコ・求めるもの怒涛の10選!!

普段はモバイルエンジニアとしてSwiftやKotlin、WebではECMAScriptやScala、Goなど、割と最近登場したいわゆるモダンと言われる言語を使用している私が、業務上がっつりPHPに入門する機会が最近ありました。
先入観で「PHPはオワコン」、「風前の灯火」みたいな事を巷で聞いていましたが、実際入門して触ってみると「あのモダンな言語仕様PHPにもあるじゃんか!」、「これができるPHPは優秀」、「あの言語のあの仕様欲しい」など古参PHPerとは少し違う観点で感じる事がありましたので、それを「怒涛の10選」としてご紹介します。

yutaabe200
PRO

March 31, 2019
Tweet

More Decks by yutaabe200

Other Decks in Programming

Transcript

  1. 1 ) 1 ͷ ͍ ͍ τ ί ɾ ٻ Ί Δ ΋ ͷ
    ౖ ౭ ͷ બ

    1 ) 1 & 3 , " * ( *
    ʙ 5 3 " $ , "
    : 6 5" " # &

    View Slide

  2. 2
    ࣗݾ঺հ
    Ѩ෦༏ଠ
    !ZVUBBCF
    $6/&-803,$0 -5%JO/**("5"
    ৽ׁ௚ૹܭը
    J04"OESPJE 1)1
    %FWFMPQFS
    ΃νκʔ͔Θ͍͍ɻ ελϯϓങ͍·ͨ͠

    ௕໺ͱ͔ࢁܗͱ͔ٶ৓ͱ͔෋ࢁʹ΋௚ૹܭը

    View Slide

  3. 3
    ໨࣍
    "HFOEB
    ൺֱର৅ݴޠɾ໔੹ࣄ߲
    1)1͍͍ͱ͜
    1)1΄͍͠΋ͷ

    View Slide

  4. ൺֱର৅ݴޠɾ໔੹ࣄ߲

    View Slide

  5. 5
    ൺֱର৅ݴޠ
    ɾ4XJGU J04"QQ

    ɾ,PUMJO "OESPJE"QQ

    ɾ+BWB4DSJQU &4Y

    ɾ(PMBOH 4FSWFS*OGSBTUSVDUVSF

    View Slide

  6. 6
    ໔੹ࣄ߲
    ɾࠓճ͓࿩͢Δͷ͸͋͘·Ͱ΋ʮݴޠ࢓༷ʯͰ͢ɻط
    ଘͷϑϨʔϜϫʔΫͳͲͰ࣮ݱͰ͖͍ͯͯ΋ɺʮϑ
    ϨʔϜϫʔΫʹґଘ͠ͳ͍ݴޠ࢓༷ʯΛ୳ٻ͢Δҙຯ
    Ͱ͓࿩͠·͢ɻ

    View Slide

  7. 1)1͍͍ͱ͜

    View Slide

  8. 8
    ΤϧϏεԋࢉࢠ
    textView.text = message ?: "͞Α͏ͳΒ"
    ,PUMJO
    $hoge = $fuga ?: “fuga”;
    1)1

    View Slide

  9. 9
    /VMM߹ମԋࢉࢠ
    $a = $a ?? $b;
    1)1
    $a ??= $b;
    1)1

    View Slide

  10. 10
    /VMM߹ମԋࢉࢠσϑΥϧτҾ਺
    function hoge(?int $x = null): void {
    $x = $x ?? 1;
    }
    1)1
    function hoge(?int $x = null): void {
    $x ??= 1;
    }
    1)1

    View Slide

  11. 11
    BSSBZ@NBQ
    $ss = ["apple", "banana", "orange"];
    $ss.array_map(function ($s) {
    // do something
    });
    1)1
    let array = [1,2,3,4,5]
    array.forEach { val in
    // do something
    }
    4XJGU

    View Slide

  12. 1)1΄͍͠΋ͷ

    View Slide

  13. 13
    ࡾ߲ԋࢉࢠͷωετ
    $result = 'a' ? 'b' : 'c' ? 'd' : ‘e';
    // ‘d’
    1)1

    View Slide

  14. 14
    ࡾ߲ԋࢉࢠͷωετ
    $result = 'a' ? 'b' : 'c' ? 'd' : ‘e';
    // ‘d’
    1)1
    ී௨ʹ໭ͯ͠

    View Slide

  15. 15
    ࡾ߲ԋࢉࢠͷωετ
    $result = 'a' ? 'b' : 'c' ? 'd' : ‘e';
    // ‘d’
    1)1
    ී௨ʹ໭ͯ͠
    ͦ΋ͦ΋ॻ͘ͳ

    View Slide

  16. 16
    ΤϧϏεԋࢉࢠ
    a?.let {
    // do something
    } ?: run {
    // do something
    }
    ,PUMJO
    $_GET[‘hoge’]->let {
    // do something
    } ?: run {
    // do something
    }
    1)1

    View Slide

  17. 17
    σϑΥϧτҾ਺
    function hoge(?int $x = null): void {
    $x = $x ?? 1;
    }
    1)1
    fun hoge(x: Int = 1, y: Int = 2) {
    }
    ,PUMJO

    View Slide

  18. 18
    DPNQBDU.BQ7BMVFT

    $fruits = array(
    “apple” => 100,
    “orange” => 200,
    “grape” => null);
    $fruits.array_map(function ($k, $v) {
    if (isset($v)) {
    // value͕nullͷ৔߹ཁૉΛ࡟আ
    }
    });
    1)1
    let fruits: [String: Int?]
    = ["apple": 100, "orange": 200, "grape": nil]
    let result = fruits.compactMapValues({$0})
    4XJGU

    View Slide

  19. 19
    ϚϧνεϨουɾඇಉظॲཧ
    function hoge() {
    $img1 = ը૾1Λऔಘ͢Δ;
    $img2 = ը૾2Λऔಘ͢Δ;
    // 2ͭͷը૾Λhogehoge͢Δ
    }
    1)1

    View Slide

  20. 20
    ϚϧνεϨουɾඇಉظॲཧ
    function hoge() {
    $img1 = ը૾1Λऔಘ͢Δ;
    $img2 = ը૾2Λऔಘ͢Δ;
    // 2ͭͷը૾Λhogehoge͢Δ
    }
    1)1
    ͜ͷͭ͸ฒྻॲཧ
    ͯ͠΄͍͠

    View Slide

  21. 21
    ϚϧνεϨουɾඇಉظॲཧ
    $source = \Rx\Observable::fromArray([1, 2, 3, 4]);
    $subscription = $source->subscribe(new \Rx\Observer\CallbackObserver(
    function ($x) {
    echo 'Next: ', $x, PHP_EOL;
    },
    function (Exception $ex) {
    echo 'Error: ', $ex->getMessage(), PHP_EOL;
    },
    function () {
    echo 'Completed', PHP_EOL;
    }
    ));
    3Y1)1
    self.loginGateway
    .fetchAdminUser(uid: uid)
    .subscribe(
    onNext: { [weak self] enitites in
    // do something
    },
    onError: { [weak self] error in
    // do something
    }).disposed(by: self.disposeBag)
    }
    3Y4XJGU

    View Slide

  22. 22
    ϚϧνεϨουɾඇಉظॲཧ
    3Y1)1
    $source = \Rx\Observable::fromArray([1, 2, 3, 4]);
    $subscription = $source->subscribe(new \Rx\Observer\CallbackObserver(
    function ($x) {
    echo 'Next: ', $x, PHP_EOL;
    },
    function (Exception $ex) {
    echo 'Error: ', $ex->getMessage(), PHP_EOL;
    },
    function () {
    echo 'Completed', PHP_EOL;
    }
    ));

    View Slide

  23. 23
    ϚϧνεϨουɾඇಉظॲཧ
    self.loginGateway
    .fetchAdminUser(uid: uid)
    .subscribe(
    onNext: { [weak self] enitites in
    // do something
    },
    onError: { [weak self] error in
    // do something
    }).disposed(by: self.disposeBag)
    }
    3Y4XJGU

    View Slide

  24. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide