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 が使われているコードは
◦ 自動変換してはいけない
◦ 一つ一つ丁寧に修正すべき
といった様々な議論を経て・・・