読者です 読者をやめる 読者になる 読者になる

y_uti のブログ

統計、機械学習、自然言語処理などに興味を持つエンジニアの技術ブログです

RFC: "var" deprecation (勉強会発表資料)

PHPRFC として提案された "var" deprecation について、第 102 回 PHP 勉強会 の懇親会 LT で発表しました。発表資料を公開します*1

www.slideshare.net

"var" というキーワードは、PHP 4 でクラスのプロパティ定義に用いられたキーワードです*2。当時の PHP は、オブジェクト指向が導入されたものの private や static といった機能は存在していませんでした。クラスのプロパティは var を用いて次のように定義していたようです。

class Hoge {
  var $fuga;
}

PHP 5 から private や static 等の機能が導入され、現在の PHP のような書き方ができるようになりましたが、後方互換性を維持するために var というキーワードは廃止されていません。上記のコードは、今の PHP でも正しいプログラムとして動作します*3

さて、今回取り上げた "var" deprecation という RFC は、そろそろ var によるプロパティ定義の構文を廃止してはどうかという提案です。PHP 7.1 で「廃止予定」として移行を促し、いつか PHP 8.0 がリリースされるときに構文から削除しようというロードマップが提案されました。発表資料は、この提案に対する議論、投票結果をまとめて紹介したというものです。

RFC に対する議論は PHP の internal ML で確認できます。アーカイブが公開されており、メーリングリストを購読していなくても議論を追えるようになっています*4。時々でも眺めてみると、面白いかもしれません。
MARC: Mailing list ARChives

また、国内では Slack に phpusers-ja というグループが作られています。私も登録しているのですが、PHP ユーザの方々が日々新鮮な情報を提供してくれるので、とても重宝しています。英語圏の情報に対して一人でアンテナを張り巡らせるのはなかなか大変だと思いますので、こういったコミュニティも活用して情報を共有できるとよいのではないでしょうか。
Join PHP ユーザーズ (日本語) on Slack!

*1:スライドのタイトルに記載した twitter アカウントが間違っています。@y__uti が正しいです。

*2:私はその頃は PHP を使っていなかったので、実際に var というキーワードを使ってプログラムを書いたことはないのですが。

*3:var で定義されたプロパティは、public で非 static なプロパティと解釈されます。

*4:この記事を書いている 5/27 時点では、typed properties に関して特に活発な議論が行われているようです。