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

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

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

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

yutaabe200

March 31, 2019
Tweet

More Decks by yutaabe200

Other Decks in Programming

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. 10 /VMM߹ମԋࢉࢠ σϑΥϧτҾ਺ function hoge(?int $x = null): void {

    $x = $x ?? 1; } 1)1 function hoge(?int $x = null): void { $x ??= 1; } 1)1
  4. 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
  5. 14 ࡾ߲ԋࢉࢠͷωετ $result = 'a' ? 'b' : 'c' ?

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

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

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

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

    ը૾2Λऔಘ͢Δ; // 2ͭͷը૾Λhogehoge͢Δ } 1)1 ͜ͷͭ͸ฒྻॲཧ ͯ͠΄͍͠
  11. 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
  12. 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; } ));
  13. 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