Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
PHP 7.2 で入るかもしれないし 7.3 かもしれないし
もっと未来で入るかもしれない…
そんな新しい機能をちょっとだけ紹介するよ
PHPBLT#6 @sters9
今日の話
PHP 7.2 で入るかもしれないし 7.3 かもしれないし
もっと未来で入るかもしれない…
そんな新しい機能をちょっとだけ紹介するよ
(タイトルそのまま)
※php-coreは本当にしらないのでそういう話はしません
PHP 好きですか!?
http://qiita.com/rana_kualu/items/40ebed78742bfdbd1065
https://wiki.php.net/rfc
https://www.docker.com/
参考実装を試すにはやっぱりDockerだよね
ホスト側の準備
 yum install docker-engine
 docker pull centos
 docker run -it -d -v /tmp:/tmp --name=p...
参考実装を試すにはやっぱりDockerだよね
 ゲスト側の準備
yum groupinstall "Development Tools“
 // 面倒なので一括準備 //
yum install libxml2-devel
 // 足りな...
参考実装を試すにはやっぱりDockerだよね
参考実装を試すぞ!
php-src/sapi/cli/php
 php-cli の実行ファイルになっているので、そこで動作確認ができる
 もちろん php-fpm なども動かせる
 余談
...
(紹介1)Arrow Functions
提案:Arrow Functions
 ECMAScript6 で追加されたアレ
 (あるいは lambda 的なそれ)
 let f = (x) => x * x
 PHPでクロージャがあるからそういう短縮して書ける
やつあってもいい...
提案:Arrow Functions
// とりあえず掛け算
$pow = fn($x) => $x * $x;
var_dump( $pow(10) ); //=> int(100)
// カリー化的なもの
$mul = fn($x) => ...
提案:Arrow Functions
// 過激な操作もワンライナーできるよ!(やめろ)
$flatten = ($__f = fn($ary, $__f) => array_reduce($ary, fn($c,
$i) => array_m...
提案:Arrow Functions
// 複文も欲しいけどもっと未来の話なんだ(参考実装なし)
$x = fn($x) => { // Syntax Error!
$a = $x * 2;
$b = $x * 2;
return $b;
};
提案: Arrow Functions
実は2015年にも提案されていたが投票で却下
 やりとりなどMLにあるっぽい?
 追っていませんごめんなさい..
 投票結果は 22/30
Short Closures という名前で出ている
/...
提案: Arrow Functions
ちょっとだけ使ってみて。
 激しい実装はするな(読めない)
 そもそもクロージャ、コールバックという機会がPHPは
少な目なので入っても大活躍しないのでは…?
 フレームワークとか Collect...
(紹介2)Pipe Operator
提案:Pipe Operator
 メソッドチェインあると思うんですよー
 例)(new Query)->where()->order()->limit();
 でもチェインできずバケツリレーも多い!
 例)$hoge = where(...
提案:Pipe Operator
そこで Pipe Operator ですよ
 例) $hoge = where(new Query)
|> order($$)
|> limit($$);
「$$」すごーい!
 わかりづらいがな。
提案:Pipe Operator
 ファイルを探す!
$ret = scandir($arg)
|> array_filter($$, function($x) { return $x !== '.' && $x != '..'; })
|>...
提案:Pipe Operator
ちょっとだけ使ってみて。
 メソッドチェインじゃないのにメソッドチェイン感
 結構ヨサソウ
 個々の行が長いとやっぱり読みにくい
 でもそういうのが乱立する時代になりそう(実装されたら)
提案:Pipe Operator
$x = Hoge()
|> array_map(function(){
//
//
//
//
//
//
}, $$)
|> …
PHPの未来をソースも併せて見た結果wwwww
どういう実装でPHPが動いているかも気になっちゃったんだよ…
今日の話
PHP 7.2 で入るかもしれないし 7.3 かもしれないし
もっと未来で入るかもしれない…
そんな新しい機能をちょっとだけ紹介するよ
(タイトルそのまま)
※php-coreは本当にしらないのでそういう話はしません
php-core...
ほかにも面白そうな機能が提案されているので
RFC を見てみよう!
一個ずつじっくり見てたらめっちゃ疲れたので2つしか見てません。。
PHPBLT#6 PHPの未来に入るかもしれない機能の紹介
Nächste SlideShare
Wird geladen in …5
×

PHPBLT#6 PHPの未来に入るかもしれない機能の紹介

1.370 Aufrufe

Veröffentlicht am

PHP BLT #6 で発表した内容です。PHPの未来で導入されるかもしれない機能の提案について、気になった2つ紹介します。

Veröffentlicht in: Ingenieurwesen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

PHPBLT#6 PHPの未来に入るかもしれない機能の紹介

  1. 1. PHP 7.2 で入るかもしれないし 7.3 かもしれないし もっと未来で入るかもしれない… そんな新しい機能をちょっとだけ紹介するよ PHPBLT#6 @sters9
  2. 2. 今日の話 PHP 7.2 で入るかもしれないし 7.3 かもしれないし もっと未来で入るかもしれない… そんな新しい機能をちょっとだけ紹介するよ (タイトルそのまま) ※php-coreは本当にしらないのでそういう話はしません
  3. 3. PHP 好きですか!?
  4. 4. http://qiita.com/rana_kualu/items/40ebed78742bfdbd1065
  5. 5. https://wiki.php.net/rfc
  6. 6. https://www.docker.com/
  7. 7. 参考実装を試すにはやっぱりDockerだよね ホスト側の準備  yum install docker-engine  docker pull centos  docker run -it -d -v /tmp:/tmp --name=php7rfc centos  docker exec -it php7rfc /bin/bash
  8. 8. 参考実装を試すにはやっぱりDockerだよね  ゲスト側の準備 yum groupinstall "Development Tools“  // 面倒なので一括準備 // yum install libxml2-devel  // 足りないらしいので別途導入 // git clone -b xxxxx --depth=1 xxxxxxx  // リポジトリとブランチはものによって変わる //  // コミットログがでかいので Shallow Clone しないと時間かかるつらい // ./buildconfig  // configureするためのスクリプト生成 // ./configure  // 追加で入れたいライブラリなどの設定が必要ならここで指定 // make  // コンパイル //
  9. 9. 参考実装を試すにはやっぱりDockerだよね 参考実装を試すぞ! php-src/sapi/cli/php  php-cli の実行ファイルになっているので、そこで動作確認ができる  もちろん php-fpm なども動かせる  余談  Intel(R) Xeon(R) CPU E5-4620 0 @ 2.20GHz  メモリ2GB  Docker version 1.7.1, build 786b29d  で、ビルドは10分くらいでした。
  10. 10. (紹介1)Arrow Functions
  11. 11. 提案:Arrow Functions  ECMAScript6 で追加されたアレ  (あるいは lambda 的なそれ)  let f = (x) => x * x  PHPでクロージャがあるからそういう短縮して書ける やつあってもいいじゃん!  fn という新しい予約語を作るよ!  クロージャや簡単な関数で使われていてそこのインパクトが。。
  12. 12. 提案:Arrow Functions // とりあえず掛け算 $pow = fn($x) => $x * $x; var_dump( $pow(10) ); //=> int(100) // カリー化的なもの $mul = fn($x) => (fn($y) => $x * $y); var_dump( $mul(2)(3) ); //=> int(6) // もちろん型宣言もできるよ $intSum = fn(array $ary): int => array_sum(array_map(intval, $ary)); var_dump($intSum([1.1, 2.2, 3.3, 4.4, 5.5])); var_dump(array_sum([1, 2, 3, 4, 5]) === $intSum([1.1, 2.2, 3.3, 4.4, 5.5]));
  13. 13. 提案:Arrow Functions // 過激な操作もワンライナーできるよ!(やめろ) $flatten = ($__f = fn($ary, $__f) => array_reduce($ary, fn($c, $i) => array_merge($c, (is_array($i) ? $__f($i, $__f) : [$i])), [])) ? fn($ary) => $__f($ary, $__f) : 0; var_dump( $flatten([1, [2, 3, [4, 5, 6]], [[[[7]]]]]) ); //=> [1, 2, 3, 4, 5, 6, 7]
  14. 14. 提案:Arrow Functions // 複文も欲しいけどもっと未来の話なんだ(参考実装なし) $x = fn($x) => { // Syntax Error! $a = $x * 2; $b = $x * 2; return $b; };
  15. 15. 提案: Arrow Functions 実は2015年にも提案されていたが投票で却下  やりとりなどMLにあるっぽい?  追っていませんごめんなさい..  投票結果は 22/30 Short Closures という名前で出ている // こういう書き方 array_map($x ~> ($x * 2), $input);
  16. 16. 提案: Arrow Functions ちょっとだけ使ってみて。  激しい実装はするな(読めない)  そもそもクロージャ、コールバックという機会がPHPは 少な目なので入っても大活躍しないのでは…?  フレームワークとか Collection ゴリゴリなとこは嬉し いと思う!
  17. 17. (紹介2)Pipe Operator
  18. 18. 提案:Pipe Operator  メソッドチェインあると思うんですよー  例)(new Query)->where()->order()->limit();  でもチェインできずバケツリレーも多い!  例)$hoge = where(new Query); $hoge = order($hoge); $hoge = limit($hoge);  ※提案ではフレームワークでありそうなHTTPレスポンスを作るまで、 が紹介されてます。 ※今回はわかりやすく?雑な?例を挙げました…
  19. 19. 提案:Pipe Operator そこで Pipe Operator ですよ  例) $hoge = where(new Query) |> order($$) |> limit($$); 「$$」すごーい!  わかりづらいがな。
  20. 20. 提案:Pipe Operator  ファイルを探す! $ret = scandir($arg) |> array_filter($$, function($x) { return $x !== '.' && $x != '..'; }) |> array_map(function ($x) use ($arg) { return $arg . '/' . $x; }, $$) |> getFileArg($$) // ファイル情報取得 |> array_merge($ret, $$);
  21. 21. 提案:Pipe Operator ちょっとだけ使ってみて。  メソッドチェインじゃないのにメソッドチェイン感  結構ヨサソウ  個々の行が長いとやっぱり読みにくい  でもそういうのが乱立する時代になりそう(実装されたら)
  22. 22. 提案:Pipe Operator $x = Hoge() |> array_map(function(){ // // // // // // }, $$) |> …
  23. 23. PHPの未来をソースも併せて見た結果wwwww どういう実装でPHPが動いているかも気になっちゃったんだよ…
  24. 24. 今日の話 PHP 7.2 で入るかもしれないし 7.3 かもしれないし もっと未来で入るかもしれない… そんな新しい機能をちょっとだけ紹介するよ (タイトルそのまま) ※php-coreは本当にしらないのでそういう話はしません php-coreめっちゃ興味わいてきた 💪(‘ω’💪)
  25. 25. ほかにも面白そうな機能が提案されているので RFC を見てみよう! 一個ずつじっくり見てたらめっちゃ疲れたので2つしか見てません。。

×