そもそも PHP 9 って存在してる?
まだ影も形もありません。けど GitHub には “PHP 9” って名前の箱 (Milestone) があって、そこに 「8.x では入れにくい破壊的変更」 がポイポイ投げ込まれています。
来たときに慌てる vs. 今のうちに慌てとく ── 後者派として、この記事では「未来箱に何が詰まってるか」を一気に棚卸しします。
キーワード: RFC / strict typing / BC break / WordPress 勢の運命
マイルストーンの中を覗いてみた結果
観測ポイント | 2025‑06‑04 時点の様子 |
---|---|
GitHub Milestone | php/php-src • PHP 9 — 6 open / 0 closed Issues、due‑date なし (要するに未定) |
主要タグ | engine , fatal-errors , strict-typing |
話し合いの場 | internals ML と GitHub RFC PR |
👀 方針ざっくり
- 8.x は互換性キープしつつ新機能追加
- “壊す系” は全部 9 箱へストック
破壊的 RFC ざっくり5選(+ミニコード)
Undefined Variable Error Promotion 🛑 採択済み
echo $foo; // PHP 8.x → Warning
// PHP 9 → Error (例外)
超初歩的だけど稼働済みのときの謎エラーたまにこれ。
Autovivification on false
廃止 🛑 採択済み
$flag = false;
$flag['key'] = 1; // 9.0 → Fatal error
false に配列アクセスする人、マジでいたりする🤮
Modern Compression 🚧 議論中
zstd
, brotli
を標準関数で握れるようにしようぜ、という夢。
True Async 🚧 議論中
async function fetch() {
$data = await http_get($url);
}
全 PHPer が欲しいけど採用票はまだ割れてる
暗黙キャスト縮小 💭 アイデア段階
文字列⇔数値の自動変換をさらに絞る案。「'10abc' == 10
やめません?」って話。
RFC は採択後に「やっぱ 8.7 で出すわ」って動くこともザラ。最新は GitHub ウォッチ推奨。
いつ GA するの? — 歴史と期待値
メジャー | GA | 次の GA まで | ざっくり周期 |
PHP 7.0 | 2015‑12 | 5 年 | 7 → 8 |
PHP 8.0 | 2020‑11 | 6? | ←イマココ |
2026〜27 年 が最短シナリオ。でも 8.x で吸収できる RFC が多いからズレ込むかも、が現場の勘。
もっと厳密な PHPはホントに来る?
結論だけ先に → 全面 strict デフォルトは五分五分。でもピンポイント厳格化は確定で進む。
年 | イベント | 影響度 | コメント |
2015 | Scalar Type Hints v5 可決 | 🟡 | ファイル単位 strict/weak 折衷案で実装 |
2021‑24 | Warning 昇格まつり | 🟡 | 未定義アクセスが次々と警告化 |
2025 | UndefinedVariable → Error | 🔴 | 9.0 で Fatal 予定(採択済み) |
strict_types=1 を全ファイルに貼れる体制 が組めてれば、9.0 の山は7合目クリアと言える。
やっておけばPHP9と即友達チェックリスト
phpstan
/psalm
レベル MAXerror_reporting(E_ALL)
を CI に入れて Warning=CI FAIL にdeclare(strict_types=1);
全面採用- Throwable 捕捉 — シリアライズ等で Warning に頼らない
- 依存ライブラリの 8.5 対応状況をウォッチ

CI赤にしないように頑張ろうねぇ〜
WordPress がPHP9に対応できる可能性を予想
WP ver | 対応 PHP | 状態 |
6.3 | 8.0 / 8.1 | 🟢 完全対応 |
6.4 | 8.3 | 🟡 β対応 |
6.7 | 8.4 | 🟡 β対応 |
- コアは案外タフ
- nightly でテスト回してるし、polyfill 大好きだから PHP9.0 でも多分生きる。頑張れ20年選手。
問題はプラグイン地獄
- レガシー作者が strict 対応放棄 → White Screen of Death 量産
- 共有レンタルサーバーが PHP 7.x を引き上げた瞬間 “なんちゃって PHPer” は淘汰
LTS とビジネス影響を秒速でイメージ
- IaaS/PaaS — 9.0 GA しても 8.x LTS が 1 年は残る。エンプラ案件は慌てなくて良し。
- Laravel/Nest — GA + 6 か月で “9.x 対応” ブランチ切るのが最近の癖。
- 新人教育 — 厳密型がデフォになると 👉 「最初から安全な PHP」 で onboarding がラク。
まとめ 〜 PHP 9 は“警告ゼロ戦士”への昇格試験だ!
- PHP 9 そのものは霧だけど RFC は既にコードを書き換え始めている。
- Warning をゼロ、静的解析 MAX にしておく → 9.0 アップグレードが “バージョン番号の差し替え” で終わる。
- GitHub Milestone ★Star、internals ML ★Watch で「未来箱」をリアルタイム監視。
要するに “慌てるな。今慌てとけ。” です 🫡
参考リンク
- GitHub Milestone — https://github.com/php/php-src/milestone/6
- RFC 一覧 — https://wiki.php.net/rfc
- PHP 8.5 スケジュール — https://wiki.php.net/todo/php85
FAQ
-
RFC って何?
-
“Request For Comments” の略。PHP コア開発者が「こういう機能どうスか?」と投げる企画書。ML で議論→投票(2/3 ルール)→可決なら実装、という流れ。つまり 仕様の Pull Request。
-
GA って何?
-
“General Availability”=正式リリース。βとか RC とかの肩書きが取れて「本番で使ってヨシ!」状態。
-
LTS って何?
-
“Long Term Support”。バグ/セキュリティ Fix だけ数年続ける安定ブランチ。Ubuntu でおなじみ。
-
nightly でテスト& polyfill 大好き → 何が安全?
-
nightly = 開発版 PHP を毎晩ビルド→CI。そこで落ちたら「明日の本番で死ぬバグ」を前日に潰せる。
polyfill = 新 API を旧バージョンでも真似る関数。=「最新版でも古い版でも動く」保証が取れる。WordPress コアが意外とタフなのはコレ。
-
zstd / brotli って何?
-
Google 謹製の Brotli、Facebook 発の Zstandard。gzip より圧縮率↑&展開速い。標準じゃないと PECL 拡張頼り+環境差異地獄 が発生する。
-
false が入った変数に配列アクセスって何でやるの?
-
$row = db_fetch();
が失敗して false → なのに['col']
を書いちゃう事故。昔は Warning で流れてたから潜伏バグになってた。
-
PHP9 が型厳密って言っても TypeScript ほどじゃないよね?
-
Yes。PHP はランタイム型チェック主体。TS はコンパイル時+構造的型。Generics もまだ RFC 段階。なので “よりマシ” になるだけで TS レベルの保証までは行かない
-
PHP で async すると何が嬉しい?
-
I/O 待ち(HTTP, DB, Redis…)を
await
でノンブロック化 → 同一プロセスで並行タスクが回せる。FaaS やチャットボットで レスポンス短縮 / スループット向上 が見込める。
コメントを残す