SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
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=php7rfc centos
 docker exec -it php7rfc /bin/bash
参考実装を試すにはやっぱりDockerだよね
 ゲスト側の準備
yum groupinstall "Development Tools“
 // 面倒なので一括準備 //
yum install libxml2-devel
 // 足りないらしいので別途導入 //
git clone -b xxxxx --depth=1 xxxxxxx
 // リポジトリとブランチはものによって変わる //
 // コミットログがでかいので Shallow Clone しないと時間かかるつらい //
./buildconfig
 // configureするためのスクリプト生成 //
./configure
 // 追加で入れたいライブラリなどの設定が必要ならここで指定 //
make
 // コンパイル //
参考実装を試すにはやっぱり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分くらいでした。
(紹介1)Arrow Functions
提案:Arrow Functions
 ECMAScript6 で追加されたアレ
 (あるいは lambda 的なそれ)
 let f = (x) => x * x
 PHPでクロージャがあるからそういう短縮して書ける
やつあってもいいじゃん!
 fn という新しい予約語を作るよ!
 クロージャや簡単な関数で使われていてそこのインパクトが。。
提案: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]));
提案: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]
提案:Arrow Functions
// 複文も欲しいけどもっと未来の話なんだ(参考実装なし)
$x = fn($x) => { // Syntax Error!
$a = $x * 2;
$b = $x * 2;
return $b;
};
提案: Arrow Functions
実は2015年にも提案されていたが投票で却下
 やりとりなどMLにあるっぽい?
 追っていませんごめんなさい..
 投票結果は 22/30
Short Closures という名前で出ている
// こういう書き方
array_map($x ~> ($x * 2), $input);
提案: Arrow Functions
ちょっとだけ使ってみて。
 激しい実装はするな(読めない)
 そもそもクロージャ、コールバックという機会がPHPは
少な目なので入っても大活躍しないのでは…?
 フレームワークとか Collection ゴリゴリなとこは嬉し
いと思う!
(紹介2)Pipe Operator
提案:Pipe Operator
 メソッドチェインあると思うんですよー
 例)(new Query)->where()->order()->limit();
 でもチェインできずバケツリレーも多い!
 例)$hoge = where(new Query);
$hoge = order($hoge);
$hoge = limit($hoge);
 ※提案ではフレームワークでありそうなHTTPレスポンスを作るまで、
が紹介されてます。
※今回はわかりやすく?雑な?例を挙げました…
提案:Pipe Operator
そこで Pipe Operator ですよ
 例) $hoge = where(new Query)
|> order($$)
|> limit($$);
「$$」すごーい!
 わかりづらいがな。
提案: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, $$);
提案:Pipe Operator
ちょっとだけ使ってみて。
 メソッドチェインじゃないのにメソッドチェイン感
 結構ヨサソウ
 個々の行が長いとやっぱり読みにくい
 でもそういうのが乱立する時代になりそう(実装されたら)
提案:Pipe Operator
$x = Hoge()
|> array_map(function(){
//
//
//
//
//
//
}, $$)
|> …
PHPの未来をソースも併せて見た結果wwwww
どういう実装でPHPが動いているかも気になっちゃったんだよ…
今日の話
PHP 7.2 で入るかもしれないし 7.3 かもしれないし
もっと未来で入るかもしれない…
そんな新しい機能をちょっとだけ紹介するよ
(タイトルそのまま)
※php-coreは本当にしらないのでそういう話はしません
php-coreめっちゃ興味わいてきた 💪(‘ω’💪)
ほかにも面白そうな機能が提案されているので
RFC を見てみよう!
一個ずつじっくり見てたらめっちゃ疲れたので2つしか見てません。。

Mais conteúdo relacionado

Mais procurados

Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうkeroyonn
 
Perl logging
Perl loggingPerl logging
Perl loggingkeroyonn
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数Wataru Terada
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
Symfony2 How to create your Bundle
Symfony2 How to create your BundleSymfony2 How to create your Bundle
Symfony2 How to create your Bundlechobi e
 
PSR-1 と PSR-2 を 5分でざっくり理解する
PSR-1 と PSR-2 を5分でざっくり理解するPSR-1 と PSR-2 を5分でざっくり理解する
PSR-1 と PSR-2 を 5分でざっくり理解するWataru Terada
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZWataru Terada
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門y-uti
 
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)ひとし あまの
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたYoshio Hanawa
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)Hiroaki KOBAYASHI
 
2018年夏のPerl5
2018年夏のPerl52018年夏のPerl5
2018年夏のPerl5charsbar
 
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)ひとし あまの
 
PDOでデータベース接続と SQLインジェクション対策
PDOでデータベース接続と SQLインジェクション対策PDOでデータベース接続と SQLインジェクション対策
PDOでデータベース接続と SQLインジェクション対策iPride Co., Ltd.
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話y-uti
 
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Akio Ishida
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)Rui Hirokawa
 
about Thrift
about Thriftabout Thrift
about ThriftNaoya Ito
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺちdo_aki
 

Mais procurados (20)

URLで遊ぼう
URLで遊ぼうURLで遊ぼう
URLで遊ぼう
 
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
 
Perl logging
Perl loggingPerl logging
Perl logging
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
Symfony2 How to create your Bundle
Symfony2 How to create your BundleSymfony2 How to create your Bundle
Symfony2 How to create your Bundle
 
PSR-1 と PSR-2 を 5分でざっくり理解する
PSR-1 と PSR-2 を5分でざっくり理解するPSR-1 と PSR-2 を5分でざっくり理解する
PSR-1 と PSR-2 を 5分でざっくり理解する
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZ
 
Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)
ウェブアプリのセキュリティをちゃんと知ろう (毎週のハンズオン勉強会の資料)
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
2018年夏のPerl5
2018年夏のPerl52018年夏のPerl5
2018年夏のPerl5
 
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
クローラを作る技術と設計 (毎週のハンズオン勉強会資料)
 
PDOでデータベース接続と SQLインジェクション対策
PDOでデータベース接続と SQLインジェクション対策PDOでデータベース接続と SQLインジェクション対策
PDOでデータベース接続と SQLインジェクション対策
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話
 
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
about Thrift
about Thriftabout Thrift
about Thrift
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺち
 

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

PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019Rui Hirokawa
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方Soudai Sone
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014Rui Hirokawa
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarSotaro Karasawa
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021Rui Hirokawa
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013Rui Hirokawa
 
Rails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2editionRails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2editionSatomi Tsujita
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)Arata Fujimura
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUpKenichi Mukai
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワークTakuya Sato
 
Ocamlでpfffを拡張した話
Ocamlでpfffを拡張した話Ocamlでpfffを拡張した話
Ocamlでpfffを拡張した話Rie Nakau
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925龍一 田中
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023Rui Hirokawa
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2Akio Ishida
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみたMori Shingo
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発emasaka
 

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

PHPの今とこれから2019
PHPの今とこれから2019PHPの今とこれから2019
PHPの今とこれから2019
 
知って得する標準関数の使い方
知って得する標準関数の使い方知って得する標準関数の使い方
知って得する標準関数の使い方
 
PHPの今とこれから2014
PHPの今とこれから2014PHPの今とこれから2014
PHPの今とこれから2014
 
Modern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI SeminarModern PHP Programming @ PFI Seminar
Modern PHP Programming @ PFI Seminar
 
PHPの今とこれから2021
PHPの今とこれから2021PHPの今とこれから2021
PHPの今とこれから2021
 
PHPの今とこれから 2013
PHPの今とこれから 2013PHPの今とこれから 2013
PHPの今とこれから 2013
 
Silex入門
Silex入門Silex入門
Silex入門
 
Rails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2editionRails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2edition
 
php.js
php.jsphp.js
php.js
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUp
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワーク
 
Ocamlでpfffを拡張した話
Ocamlでpfffを拡張した話Ocamlでpfffを拡張した話
Ocamlでpfffを拡張した話
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
 
PHPの今とこれから2023
PHPの今とこれから2023PHPの今とこれから2023
PHPの今とこれから2023
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
Local php-100828 2
Local php-100828 2Local php-100828 2
Local php-100828 2
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみた
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
Puppetのススメ
PuppetのススメPuppetのススメ
Puppetのススメ
 

Mais de sters

Facebook Messenger Platform で始める Bot 開発
Facebook Messenger Platform で始める Bot 開発Facebook Messenger Platform で始める Bot 開発
Facebook Messenger Platform で始める Bot 開発sters
 
Packagist を旅してみる
Packagist を旅してみるPackagist を旅してみる
Packagist を旅してみるsters
 
PHP で LINE Bot をしてみる
PHP で LINE Bot をしてみるPHP で LINE Bot をしてみる
PHP で LINE Bot をしてみるsters
 
Jenkins Wars Episode 2
Jenkins Wars Episode 2Jenkins Wars Episode 2
Jenkins Wars Episode 2sters
 
Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話sters
 
JavaScriptによる記号プログラミング
JavaScriptによる記号プログラミングJavaScriptによる記号プログラミング
JavaScriptによる記号プログラミングsters
 
まぼろしのむいかめ in #upcamp 2013 Toyko
まぼろしのむいかめ in #upcamp 2013 Toykoまぼろしのむいかめ in #upcamp 2013 Toyko
まぼろしのむいかめ in #upcamp 2013 Toykosters
 
UnityとnodeとMMDと
UnityとnodeとMMDとUnityとnodeとMMDと
UnityとnodeとMMDとsters
 
残パン会のあれ
残パン会のあれ残パン会のあれ
残パン会のあれsters
 

Mais de sters (9)

Facebook Messenger Platform で始める Bot 開発
Facebook Messenger Platform で始める Bot 開発Facebook Messenger Platform で始める Bot 開発
Facebook Messenger Platform で始める Bot 開発
 
Packagist を旅してみる
Packagist を旅してみるPackagist を旅してみる
Packagist を旅してみる
 
PHP で LINE Bot をしてみる
PHP で LINE Bot をしてみるPHP で LINE Bot をしてみる
PHP で LINE Bot をしてみる
 
Jenkins Wars Episode 2
Jenkins Wars Episode 2Jenkins Wars Episode 2
Jenkins Wars Episode 2
 
Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話
 
JavaScriptによる記号プログラミング
JavaScriptによる記号プログラミングJavaScriptによる記号プログラミング
JavaScriptによる記号プログラミング
 
まぼろしのむいかめ in #upcamp 2013 Toyko
まぼろしのむいかめ in #upcamp 2013 Toykoまぼろしのむいかめ in #upcamp 2013 Toyko
まぼろしのむいかめ in #upcamp 2013 Toyko
 
UnityとnodeとMMDと
UnityとnodeとMMDとUnityとnodeとMMDと
UnityとnodeとMMDと
 
残パン会のあれ
残パン会のあれ残パン会のあれ
残パン会のあれ
 

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