PHP7で変わること
次の土曜日5/30のPHPカンファレンス関西2015で基調講演(10:30-11:15)をさせて頂くことになりました。タイトルは「PHP7で変わること——言語仕様とエンジンの改善ポイント」です。チケットは既に売り切れているそうですが、参加者の方は早起きして来て頂けると幸いです。
このところQiitaに「PHP7調査」というシリーズを連投していたのも発表を意識してのことです。PHP7の新機能を一つずつ実際に試してみて、その結果を簡単にまとめていました。
今回は発表前の区切りとして、私の書いたPHP7関連の記事・プレゼン資料を一覧形式でまとめなおしてみます。PHPカンファレンス関西2015ではこれらの内容を踏まえつつ、気になる点を重点的にお伝えしたいと考えています。
内部実装のリファクタリング
PHP7の目玉と言える、速度改善に関わる内容がほとんどです。
後方互換性を崩すような変更・廃止
今回のPHP7はメジャーバージョンアップということで、PHP5までの挙動を変更するような内容がたくさん採用されています。個人的な見解としては正しく整理されたような箇所が多く、実コードへの影響は軽微だと考えています。とはいえ、実際のところは移行してみないとわかりませんね…。
- PHPのJSONライセンス問題が一応決着 - hnwの日記
- date.timezoneの設定がなくても怒られなくなる - Qiita
- エラーメッセージ中のlong/doubleをinteger/floatに統一した - Qiita
- 型名と同じクラス名が作れないようになった - Qiita
- preg_replace関数のe修飾子の廃止 - Qiita
- PHP組み込みクラスのコンストラクタでエラーが起きると必ず例外を投げるようになった - Qiita
- 16進数が数値文字列として扱われなくなる - Qiita
- メンテされていないエクステンション・SAPIの整理 - Qiita
- カスタムセッションハンドラの返り値の意味を変更 - Qiita
- 整数キャストとシフトの仕様整理 - Qiita
- E_STRICTの廃止 - Qiita
- 整数型の引数のオーバーフローがエラーになった - Qiita
- 64bit環境における整数型のサイズ調整 - Qiita
- PHP4スタイルのコンストラクタが非推奨になった - Qiita
新しい構文・演算子の実装
マイナーバージョンアップでも新たな構文が入ることはありますが、今回はやけに量が多い印象です。メジャーバージョンアップということで皆が張り切ったのかもしれません。他の言語の影響が見え隠れするのも面白いですね。
- スカラ型のタイプヒントが書けるようになった - Qiita
- 関数の返り値のタイプヒントが書けるようになった - Qiita
- 致命的エラーが例外としてキャッチできるようになった - Qiita
- ??演算子の新設 - Qiita
- 無名クラスの導入 - Qiita
- assert関数が実用的になった - Qiita
- 関数適用やメソッド呼び出しなどのネストをサポート・整理 - Qiita
- ジェネレータがyield fromとreturnをサポート - Qiita
- <=>演算子の新設 - Qiita
- 名前空間のuseをまとめて書けるようになった - Qiita
- 文字列中にコードポイントでUTF-8の1文字を書けるようになった - Qiita
新しい関数の実装・オプショナル引数の追加
これらはマイナーバージョンアップでも入るレベルの変更だと言えます。個人的にはCSRPNG関数をPHPコアで提供してくれるのが大きいですね。
拡張モジュールの書き方が変わった
まとめ
上のリストは多いように思われるかもしれませんが、これでもPHP7の全てを網羅しているわけではありません。PHPカンファレンス関西では記事にしていない内容もお話しする予定ですので、上の記事を全部読んだ方もそうでない方もご期待くださいませ。