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

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

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

0b035ebcffb3af51d4b759733619beb0?s=128

yutaabe200

March 31, 2019
Tweet

Transcript

  1. 1 ) 1 ͷ ͍ ͍ τ ί ɾ ٻ

    Ί Δ ΋ ͷ ౖ ౭ ͷ   બ               1 ) 1 & 3 , " * ( *            ʙ  5 3 " $ ,  "  : 6 5"  " # &
  2. 2 ࣗݾ঺հ Ѩ෦༏ଠ !ZVUBBCF $6/&-803,$0 -5%JO/**("5" ৽ׁ௚ૹܭը J04"OESPJE 1)1 %FWFMPQFS

    ΃νκʔ͔Θ͍͍ɻ ελϯϓങ͍·ͨ͠ ௕໺ͱ͔ࢁܗͱ͔ٶ৓ͱ͔෋ࢁʹ΋௚ૹܭը
  3. 3 ໨࣍ "HFOEB ൺֱର৅ݴޠɾ໔੹ࣄ߲ 1)1͍͍ͱ͜ 1)1΄͍͠΋ͷ

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

  5. 5 ൺֱର৅ݴޠ ɾ4XJGU J04"QQ ɾ,PUMJO "OESPJE"QQ ɾ+BWB4DSJQU &4Y ɾ(PMBOH 4FSWFS*OGSBTUSVDUVSF

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

  7. 1)1͍͍ͱ͜

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

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

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

    $x = $x ?? 1; } 1)1 function hoge(?int $x = null): void { $x ??= 1; } 1)1
  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
  12. 1)1΄͍͠΋ͷ

  13. 13 ࡾ߲ԋࢉࢠͷωετ $result = 'a' ? 'b' : 'c' ?

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

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

    'd' : ‘e'; // ‘d’ 1)1 ී௨ʹ໭ͯ͠ ͦ΋ͦ΋ॻ͘ͳ
  16. 16 ΤϧϏεԋࢉࢠ a?.let { // do something } ?: run

    { // do something } ,PUMJO $_GET[‘hoge’]->let { // do something } ?: run { // do something } 1)1
  17. 17 σϑΥϧτҾ਺ function hoge(?int $x = null): void { $x

    = $x ?? 1; } 1)1 fun hoge(x: Int = 1, y: Int = 2) { } ,PUMJO
  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
  19. 19 ϚϧνεϨουɾඇಉظॲཧ function hoge() { $img1 = ը૾1Λऔಘ͢Δ; $img2 =

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

    ը૾2Λऔಘ͢Δ; // 2ͭͷը૾Λhogehoge͢Δ } 1)1 ͜ͷͭ͸ฒྻॲཧ ͯ͠΄͍͠
  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
  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; } ));
  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
  24. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠