SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
RFC: "var" Deprecation
内山 雄司 (@y-uti)
2016-05-25 第102回 PHP 勉強会
自己紹介
内山 雄司 (@y__uti)
◦ http://y-uti.hatenablog.jp/ (phpusers-ja)
仕事
◦ 受託開発の会社 (株式会社ピコラボ) でプログラマをしています
興味
◦ プログラミング言語処理系
◦ 機械学習
2016-05-25 第102回 PHP 勉強会 2
PHP RFC
https://wiki.php.net/rfc
将来の PHP に向けた提案
◦ 提案して
◦ 議論して
◦ 投票して
◦ 実装して
◦ リリース!
2016-05-25 第102回 PHP 勉強会 3
PHP 7.1 では・・・
導入が決定している機能の一部を紹介
2016-05-25 第102回 PHP 勉強会 4
Generalize support
of negative string offsets
文字列のオフセットに負の値を指定できたり
2016-05-25 第102回 PHP 勉強会 5
<?php
$str = 'abcde';
echo $str[-2] . "¥n";
// 実行結果
// d
◦ 賛成 28 票 vs 反対 0 票
Support Class Constant Visibility
クラスに private な定数を定義できたり
2016-05-25 第102回 PHP 勉強会 6
<?php
class Hoge {
private const fuga = 10;
}
echo Hoge::fuga . "¥n";
// 実行結果
// PHP Fatal error: Uncaught Error: Cannot access private const
// Hoge::fuga in /home/y-uti/test.php:7
◦ 賛成 28 票 vs 反対 2 票
Square bracket syntax
for array destructuring assignment
list を角括弧で書けたり
2016-05-25 第102回 PHP 勉強会 7
<?php
[$a, $b] = [3, 4];
echo "$a, $b" . "¥n";
// 実行結果
// 3, 4
◦ 賛成 41 票 vs 反対 0 票
待ち遠しいですね!
PHP 7.1 は 12 月頃にリリース予定
RFC: "var" Deprecation
賛否が分かれる RFC の議論は面白い
2016-05-25 第102回 PHP 勉強会 8
"var"
クラスのプロパティを定義するキーワード
2016-05-25 第102回 PHP 勉強会 9
class Hoge {
var $fuga;
}
http://php.net/manual/ja/language.oop5.properties.php
RFC: "var" Deprecation
提案内容
◦ PHP 7.1 で var を廃止予定 (deprecated) にしよう
◦ PHP 8.0 で var を廃止 (its functionality removed) しよう
提案者
◦ Colin O'Dell 氏
経緯
◦ [2016-02-18] php-internals ML に投稿
◦ http://marc.info/?l=php-internals&m=145582267616585&w=2
◦ [2016-03-10] RFC 作成
◦ https://wiki.php.net/rfc/var_deprecation
2016-05-25 第102回 PHP 勉強会 10
Pros (賛成する立場の主張)
重複する機能を除去できる
◦ var と public は同じ。片方でよい
public の方が広く使える
◦ public static と書けるが var はダメ
◦ ちなみに 7.1 以降は public const とも
書ける
今なら長い移行期間を取れる
◦ PHP 8 のリリースは恐らく数年先
◦ 移行するのに十分な余裕がある
簡単に移行できる
◦ var を public に変換すれば動く
◦ 変換スクリプトが提供された
レガシーな機能を除去できる
◦ var は PHP 4 のレガシーな機能
◦ メジャーリリースでレガシーな機能を
除去することは前例もある
既にあまり使われていない
◦ var が使われているのは 4 ~ 8%
◦ Packagist の上位 10,000 パッケージ中
2016-05-25 第102回 PHP 勉強会 11
(RFC を意訳)
Cons (反対する立場の主張)
壊れていない
◦ var に問題はない。緊急性がない
後方互換性を失う (BC break)
◦ var を使うコードが動かなくなる
◦ BC breaks を軽んじてはいけない
機能的な恩恵がない
◦ 開発者に何の新機能ももたらさない
◦ var を使っていない人は関係ない
◦ var を使っていた人は対応が必要
var と public は同じではない
◦ 開発者の意図が違う可能性
2016-05-25 第102回 PHP 勉強会 12
(RFC を意訳)
"public" is Not The Same
開発者が "public" と書いたら
2016-05-25 第102回 PHP 勉強会 13
class Hoge {
public $fuga;
}
◦ この開発者は $fuga が public プロパティだと意図したに違いない
開発者が "var" と書いた場合
class Hoge {
var $fuga;
}
◦ この開発者は $fuga が public プロパティだと意図しただろうか?
◦ たぶん No.
(php-internals での議論を私なりに解釈)
"public" is Not The Same
var から public への一括変換はコードの品質を落とす
品質不明なコードにこう書いてあったら
2016-05-25 第102回 PHP 勉強会 14
(php-internals での議論を私なりに解釈)
class Hoge {
var $fuga;
}
◦ "var" という記述を見て「コードの臭い」に気がつく
◦ この $fuga は public なのか private なのか・・・
◦ もしかすると static 変数かも?
◦ 適切なアクセス修飾子に置き換える
"public" is Not The Same
機械的に一括変換してしまったら
2016-05-25 第102回 PHP 勉強会 15
(php-internals での議論を私なりに解釈)
class Hoge {
public $fuga;
}
◦ もう「コードの臭い」に気づくのは難しい
◦ この $fuga が実は private とか考えるだけでツライ
だから今現在 var が使われているコードは
◦ 自動変換してはいけない
◦ 一つ一つ丁寧に修正すべき
といった様々な議論を経て・・・
投票結果
31
23 賛成
反対
2016-05-25 第102回 PHP 勉強会 16
2/3 の賛成が必要
RFC: "var" Deprecation
2016-05-25 第102回 PHP 勉強会 17
Declined
var は今後も残されることになりました
まとめ
RFC を読んでみよう
◦ 今後の PHP の新機能を先取りできる
RFC の議論も読んでみよう
◦ プログラミング言語の開発者がどんなことを考えているのか分かる
2016-05-25 第102回 PHP 勉強会 18

Weitere ähnliche Inhalte

Was ist angesagt?

HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?sasezaki
 
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。sasezaki
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015Rui Hirokawa
 
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い sasezaki
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードy-uti
 
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くPHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くshinjiigarashi
 
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るZend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るYoshio Hanawa
 
Phpstudy44 Zend Frameworkが抱えている問題は多い。
Phpstudy44 Zend Frameworkが抱えている問題は多い。Phpstudy44 Zend Frameworkが抱えている問題は多い。
Phpstudy44 Zend Frameworkが抱えている問題は多い。sasezaki
 
PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告y-uti
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみたy-uti
 
PHP-ML で手書き数字認識
PHP-ML で手書き数字認識PHP-ML で手書き数字認識
PHP-ML で手書き数字認識y-uti
 
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るPHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るshinjiigarashi
 
PHP基礎勉強会
PHP基礎勉強会PHP基礎勉強会
PHP基礎勉強会Yuji Otani
 
PECL を数えてみた
PECL を数えてみたPECL を数えてみた
PECL を数えてみたy-uti
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020Rui Hirokawa
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―shinjiigarashi
 
Behat+Symfony2ではじめるBDD超入門
Behat+Symfony2ではじめるBDD超入門Behat+Symfony2ではじめるBDD超入門
Behat+Symfony2ではじめるBDD超入門晃 遠山
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjHisateru Tanaka
 
PHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend FramewrokPHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend Framewroksasezaki
 
phpcon2013_zf
phpcon2013_zfphpcon2013_zf
phpcon2013_zfsasezaki
 

Was ist angesagt? (20)

HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?HTTPメッセージ、PHPの 事情ば分かっとっと?
HTTPメッセージ、PHPの 事情ば分かっとっと?
 
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
 
PHPの今とこれから2015
PHPの今とこれから2015PHPの今とこれから2015
PHPの今とこれから2015
 
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロード
 
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くPHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩く
 
Zend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探るZend OPcacheの速さの秘密を探る
Zend OPcacheの速さの秘密を探る
 
Phpstudy44 Zend Frameworkが抱えている問題は多い。
Phpstudy44 Zend Frameworkが抱えている問題は多い。Phpstudy44 Zend Frameworkが抱えている問題は多い。
Phpstudy44 Zend Frameworkが抱えている問題は多い。
 
PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみた
 
PHP-ML で手書き数字認識
PHP-ML で手書き数字認識PHP-ML で手書き数字認識
PHP-ML で手書き数字認識
 
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るPHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
 
PHP基礎勉強会
PHP基礎勉強会PHP基礎勉強会
PHP基礎勉強会
 
PECL を数えてみた
PECL を数えてみたPECL を数えてみた
PECL を数えてみた
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020
 
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
 
Behat+Symfony2ではじめるBDD超入門
Behat+Symfony2ではじめるBDD超入門Behat+Symfony2ではじめるBDD超入門
Behat+Symfony2ではじめるBDD超入門
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
PHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend FramewrokPHP Conference Japan 2010 : Zend Framewrok
PHP Conference Japan 2010 : Zend Framewrok
 
phpcon2013_zf
phpcon2013_zfphpcon2013_zf
phpcon2013_zf
 

Andere mochten auch

Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門y-uti
 
Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発Yuji Otani
 
プロジェクトを成功させるための期待マネジメント_中村洋_A-3
プロジェクトを成功させるための期待マネジメント_中村洋_A-3プロジェクトを成功させるための期待マネジメント_中村洋_A-3
プロジェクトを成功させるための期待マネジメント_中村洋_A-3Yoh Nakamura
 
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力Yoshitaka Kawashima
 
5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキTakao Oyobe
 
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumiItsuki Kuroda
 
アジャイルってなにが美味しいの
アジャイルってなにが美味しいのアジャイルってなにが美味しいの
アジャイルってなにが美味しいのYasui Tsutomu
 

Andere mochten auch (7)

Hack/HHVM 入門
Hack/HHVM 入門Hack/HHVM 入門
Hack/HHVM 入門
 
Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発
 
プロジェクトを成功させるための期待マネジメント_中村洋_A-3
プロジェクトを成功させるための期待マネジメント_中村洋_A-3プロジェクトを成功させるための期待マネジメント_中村洋_A-3
プロジェクトを成功させるための期待マネジメント_中村洋_A-3
 
たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力たとえ日本人同士でも必要な異文化理解力
たとえ日本人同士でも必要な異文化理解力
 
5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ5分でわかった気になるインセプションデッキ
5分でわかった気になるインセプションデッキ
 
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
 
アジャイルってなにが美味しいの
アジャイルってなにが美味しいのアジャイルってなにが美味しいの
アジャイルってなにが美味しいの
 

Ähnlich wie RFC: "var" Deprecation

PHPの今とこれから2022
PHPの今とこれから2022PHPの今とこれから2022
PHPの今とこれから2022Rui Hirokawa
 
第104回 php勉強会@東京 Laravel
第104回 php勉強会@東京 Laravel第104回 php勉強会@東京 Laravel
第104回 php勉強会@東京 LaravelJunKeun Lee
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室Yusuke Ando
 
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのことLaravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのことYuta Ohashi
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12Ryuji Yamashita
 
PHPの今とこれから2018
PHPの今とこれから2018PHPの今とこれから2018
PHPの今とこれから2018Rui Hirokawa
 
Heroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションHeroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションMasashi Shinbara
 
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話Yuki Kanazawa
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由Kenichi Mukai
 
いまどき(これから)のPHP開発
いまどき(これから)のPHP開発いまどき(これから)のPHP開発
いまどき(これから)のPHP開発Kenjiro Kubota
 
PHPの今とこれから2006
PHPの今とこれから2006PHPの今とこれから2006
PHPの今とこれから2006Rui Hirokawa
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon phpdo_aki
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料Junichi Ishida
 
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Nozomi Kurihara
 
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxPHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxHideo Kashioka
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)Rui Hirokawa
 
Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)
Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)
Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)v6app
 

Ähnlich wie RFC: "var" Deprecation (20)

PHPの今とこれから2022
PHPの今とこれから2022PHPの今とこれから2022
PHPの今とこれから2022
 
OSC福岡 20111203
OSC福岡 20111203OSC福岡 20111203
OSC福岡 20111203
 
第104回 php勉強会@東京 Laravel
第104回 php勉強会@東京 Laravel第104回 php勉強会@東京 Laravel
第104回 php勉強会@東京 Laravel
 
8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室8時間耐久 PHP構築の教室
8時間耐久 PHP構築の教室
 
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのことLaravel5.5から6.4にアップグレードしたときに必要だった7つのこと
Laravel5.5から6.4にアップグレードしたときに必要だった7つのこと
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
 
PHPの今とこれから2018
PHPの今とこれから2018PHPの今とこれから2018
PHPの今とこれから2018
 
Heroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーションHeroku で作る
スケーラブルな 
PHP アプリケーション
Heroku で作る
スケーラブルな 
PHP アプリケーション
 
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
 
いまどき(これから)のPHP開発
いまどき(これから)のPHP開発いまどき(これから)のPHP開発
いまどき(これから)のPHP開発
 
PHPの今とこれから2006
PHPの今とこれから2006PHPの今とこれから2006
PHPの今とこれから2006
 
Laravel5.1 Release
Laravel5.1 ReleaseLaravel5.1 Release
Laravel5.1 Release
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon php
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料
 
Fn project爆誕
Fn project爆誕Fn project爆誕
Fn project爆誕
 
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316
 
PHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptxPHPCON_TOKYO_2022_Bigginer.pptx
PHPCON_TOKYO_2022_Bigginer.pptx
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
 
Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)
Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)
Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)
 

Mehr von y-uti

潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法y-uti
 
Active Object
Active ObjectActive Object
Active Objecty-uti
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化y-uti
 
ロジスティック回帰入門
ロジスティック回帰入門ロジスティック回帰入門
ロジスティック回帰入門y-uti
 
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...y-uti
 
OPcache の最適化器の今
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今y-uti
 
スパース推定
スパース推定スパース推定
スパース推定y-uti
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話y-uti
 
分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用y-uti
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試したy-uti
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 
逐次ベイズ学習 - サンプリング近似法の場合 -
逐次ベイズ学習 - サンプリング近似法の場合 -逐次ベイズ学習 - サンプリング近似法の場合 -
逐次ベイズ学習 - サンプリング近似法の場合 -y-uti
 
各言語の k-means 比較
各言語の k-means 比較各言語の k-means 比較
各言語の k-means 比較y-uti
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話y-uti
 
Git 入門
Git 入門Git 入門
Git 入門y-uti
 
PHP5.3 を使うのはやめよう
PHP5.3 を使うのはやめようPHP5.3 を使うのはやめよう
PHP5.3 を使うのはやめようy-uti
 
プログラマのための文書推薦入門
プログラマのための文書推薦入門プログラマのための文書推薦入門
プログラマのための文書推薦入門y-uti
 

Mehr von y-uti (17)

潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
 
Active Object
Active ObjectActive Object
Active Object
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化
 
ロジスティック回帰入門
ロジスティック回帰入門ロジスティック回帰入門
ロジスティック回帰入門
 
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
 
OPcache の最適化器の今
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今
 
スパース推定
スパース推定スパース推定
スパース推定
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話
 
分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試した
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
逐次ベイズ学習 - サンプリング近似法の場合 -
逐次ベイズ学習 - サンプリング近似法の場合 -逐次ベイズ学習 - サンプリング近似法の場合 -
逐次ベイズ学習 - サンプリング近似法の場合 -
 
各言語の k-means 比較
各言語の k-means 比較各言語の k-means 比較
各言語の k-means 比較
 
PHP の GC の話
PHP の GC の話PHP の GC の話
PHP の GC の話
 
Git 入門
Git 入門Git 入門
Git 入門
 
PHP5.3 を使うのはやめよう
PHP5.3 を使うのはやめようPHP5.3 を使うのはやめよう
PHP5.3 を使うのはやめよう
 
プログラマのための文書推薦入門
プログラマのための文書推薦入門プログラマのための文書推薦入門
プログラマのための文書推薦入門
 

RFC: "var" Deprecation

  • 1. RFC: "var" Deprecation 内山 雄司 (@y-uti) 2016-05-25 第102回 PHP 勉強会
  • 2. 自己紹介 内山 雄司 (@y__uti) ◦ http://y-uti.hatenablog.jp/ (phpusers-ja) 仕事 ◦ 受託開発の会社 (株式会社ピコラボ) でプログラマをしています 興味 ◦ プログラミング言語処理系 ◦ 機械学習 2016-05-25 第102回 PHP 勉強会 2
  • 3. PHP RFC https://wiki.php.net/rfc 将来の PHP に向けた提案 ◦ 提案して ◦ 議論して ◦ 投票して ◦ 実装して ◦ リリース! 2016-05-25 第102回 PHP 勉強会 3
  • 5. Generalize support of negative string offsets 文字列のオフセットに負の値を指定できたり 2016-05-25 第102回 PHP 勉強会 5 <?php $str = 'abcde'; echo $str[-2] . "¥n"; // 実行結果 // d ◦ 賛成 28 票 vs 反対 0 票
  • 6. Support Class Constant Visibility クラスに private な定数を定義できたり 2016-05-25 第102回 PHP 勉強会 6 <?php class Hoge { private const fuga = 10; } echo Hoge::fuga . "¥n"; // 実行結果 // PHP Fatal error: Uncaught Error: Cannot access private const // Hoge::fuga in /home/y-uti/test.php:7 ◦ 賛成 28 票 vs 反対 2 票
  • 7. Square bracket syntax for array destructuring assignment list を角括弧で書けたり 2016-05-25 第102回 PHP 勉強会 7 <?php [$a, $b] = [3, 4]; echo "$a, $b" . "¥n"; // 実行結果 // 3, 4 ◦ 賛成 41 票 vs 反対 0 票 待ち遠しいですね! PHP 7.1 は 12 月頃にリリース予定
  • 8. RFC: "var" Deprecation 賛否が分かれる RFC の議論は面白い 2016-05-25 第102回 PHP 勉強会 8
  • 9. "var" クラスのプロパティを定義するキーワード 2016-05-25 第102回 PHP 勉強会 9 class Hoge { var $fuga; } http://php.net/manual/ja/language.oop5.properties.php
  • 10. RFC: "var" Deprecation 提案内容 ◦ PHP 7.1 で var を廃止予定 (deprecated) にしよう ◦ PHP 8.0 で var を廃止 (its functionality removed) しよう 提案者 ◦ Colin O'Dell 氏 経緯 ◦ [2016-02-18] php-internals ML に投稿 ◦ http://marc.info/?l=php-internals&m=145582267616585&w=2 ◦ [2016-03-10] RFC 作成 ◦ https://wiki.php.net/rfc/var_deprecation 2016-05-25 第102回 PHP 勉強会 10
  • 11. Pros (賛成する立場の主張) 重複する機能を除去できる ◦ var と public は同じ。片方でよい public の方が広く使える ◦ public static と書けるが var はダメ ◦ ちなみに 7.1 以降は public const とも 書ける 今なら長い移行期間を取れる ◦ PHP 8 のリリースは恐らく数年先 ◦ 移行するのに十分な余裕がある 簡単に移行できる ◦ var を public に変換すれば動く ◦ 変換スクリプトが提供された レガシーな機能を除去できる ◦ var は PHP 4 のレガシーな機能 ◦ メジャーリリースでレガシーな機能を 除去することは前例もある 既にあまり使われていない ◦ var が使われているのは 4 ~ 8% ◦ Packagist の上位 10,000 パッケージ中 2016-05-25 第102回 PHP 勉強会 11 (RFC を意訳)
  • 12. Cons (反対する立場の主張) 壊れていない ◦ var に問題はない。緊急性がない 後方互換性を失う (BC break) ◦ var を使うコードが動かなくなる ◦ BC breaks を軽んじてはいけない 機能的な恩恵がない ◦ 開発者に何の新機能ももたらさない ◦ var を使っていない人は関係ない ◦ var を使っていた人は対応が必要 var と public は同じではない ◦ 開発者の意図が違う可能性 2016-05-25 第102回 PHP 勉強会 12 (RFC を意訳)
  • 13. "public" is Not The Same 開発者が "public" と書いたら 2016-05-25 第102回 PHP 勉強会 13 class Hoge { public $fuga; } ◦ この開発者は $fuga が public プロパティだと意図したに違いない 開発者が "var" と書いた場合 class Hoge { var $fuga; } ◦ この開発者は $fuga が public プロパティだと意図しただろうか? ◦ たぶん No. (php-internals での議論を私なりに解釈)
  • 14. "public" is Not The Same var から public への一括変換はコードの品質を落とす 品質不明なコードにこう書いてあったら 2016-05-25 第102回 PHP 勉強会 14 (php-internals での議論を私なりに解釈) class Hoge { var $fuga; } ◦ "var" という記述を見て「コードの臭い」に気がつく ◦ この $fuga は public なのか private なのか・・・ ◦ もしかすると static 変数かも? ◦ 適切なアクセス修飾子に置き換える
  • 15. "public" is Not The Same 機械的に一括変換してしまったら 2016-05-25 第102回 PHP 勉強会 15 (php-internals での議論を私なりに解釈) class Hoge { public $fuga; } ◦ もう「コードの臭い」に気づくのは難しい ◦ この $fuga が実は private とか考えるだけでツライ だから今現在 var が使われているコードは ◦ 自動変換してはいけない ◦ 一つ一つ丁寧に修正すべき といった様々な議論を経て・・・
  • 16. 投票結果 31 23 賛成 反対 2016-05-25 第102回 PHP 勉強会 16 2/3 の賛成が必要
  • 17. RFC: "var" Deprecation 2016-05-25 第102回 PHP 勉強会 17 Declined var は今後も残されることになりました
  • 18. まとめ RFC を読んでみよう ◦ 今後の PHP の新機能を先取りできる RFC の議論も読んでみよう ◦ プログラミング言語の開発者がどんなことを考えているのか分かる 2016-05-25 第102回 PHP 勉強会 18