Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
PHPv8.4で追加されたこと+アルファ.pdf
Search
福島勇人
March 27, 2026
Technology
26
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
PHPv8.4で追加されたこと+アルファ.pdf
福島勇人
March 27, 2026
Other Decks in Technology
See All in Technology
Classmethod Company Deck
satoshi7
1
680
re:Invent初参加で変わったこと、2回目にやってみたいこと(JAWS-UG彩の国埼玉 #12)
mhrtech
2
220
夫婦で子育てするための育児標準化
codmoninc
PRO
0
330
Kiro Crewをはじめよう
kizawa2020
1
160
USB PDを使ってスマホを労わりたい
raspython3
0
180
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
580
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
420
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
4
1k
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
190
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
190
今さら理解するウェブフォントver.2026
takanorip
3
770
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
150
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
410
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Automating Front-end Workflow
addyosmani
1369
210k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
730
Building AI with AI
inesmontani
PRO
1
1.3k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
460
Chasing Engaging Ingredients in Design
codingconduct
0
360
Balancing Empowerment & Direction
lara
6
1.3k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
520
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
570
Transcript
PHP 8.3 & 8.4 最近の PHP はこんなに変わった WEB Creative Department
後半は PHP 情報の追いかけ方も紹介します 1
なぜ今 PHP の話? Laravel 13(2025年3月)が PHP 8.3 以上を必須化 ben54jp も将来的にバージョンアップ予定
バージョン リリース 取り上げる機能 PHP 8.3 2023年11月 json_validate / 型付き定数 PHP 8.4 2024年11月 Property Hooks / 非対称 Visibility PHP 8.5 2025年11月 パイプ演算子 PHP 8.6 2026年11月予定 部分適用(予告) 2
前半 PHP の主要な新機能 3
json_validate() PHP 8.3 JSON チェック専用関数。デコードせず検証だけ行う。 php.net // Before — デコードして確認(メモリを無駄に使う)
function isValidJson(string $json): bool { json_decode($json); return json_last_error() === JSON_ERROR_NONE; } // After PHP 8.3 json_validate('{"name": "はやと"}'); // true json_validate('{invalid}'); // false 参考(3v4l.org) 4
型付き定数 PHP 8.3 定数に型を指定できる。違う型で再定義するとエラー。 php.net // Before — 別の型に再定義してもエラーにならない interface
HasVersion { const VERSION = '1.0'; } class Foo implements HasVersion { const VERSION = []; // 配列で再定義!エラーなし } var_dump(Foo::VERSION); // array(0) {}(意図しない値) // After PHP 8.3 — 型を明示 interface HasVersion { const string VERSION = '1.0'; } class Bar implements HasVersion { // const string VERSION = []; // Fatal error! const string VERSION = '2.0'; } var_dump(Bar::VERSION); // string(3) "2.0" 参考(3v4l.org) 5
Property Hooks PHP 8.4 getter/setter メソッドをプロパティに直接書けるようになった。 php.net // Before —
書き込み時に変換したいだけなのに getter/setter が必要 class Locale { private string $countryCode; public function getCountryCode(): string { return $this->countryCode; } public function setCountryCode(string $v): void { $this->countryCode = strtoupper($v); // 大文字変換 } } $locale = new Locale(); $locale->setCountryCode('br'); echo $locale->getCountryCode(); // BR 6
Property Hooks PHP 8.4(続き) PHP 8.4 では setter をプロパティ定義に直接書ける。 //
After PHP 8.4 — プロパティに直接書ける class Locale { public string $countryCode { set(string $v) { $this->countryCode = strtoupper($v); // 大文字変換 } } } $locale = new Locale(); $locale->countryCode = 'br'; echo $locale->countryCode; // BR 7
非対称アクセス修飾子 PHP 8.4 「外から読めるけど、書き換えはクラス内だけ」を1行で表現。 php.net // Before — 外から読みたいだけなのに getter
が必要 class PhpVersion { private string $version = '8.3'; public function getVersion(): string { return $this->version; } } 8
非対称アクセス修飾子 PHP 8.4(続き) public private(set) で「読み取りは public、代入は private」のみ。 // After
PHP 8.4 class PhpVersion { public private(set) string $version = '8.4'; } echo $v->version; // 外から読める $v->version = '9.0'; // Error! 9
パイプ演算子 |> PHP 8.5 データ変換、どう書いてる? php.net $input = ' Hello
World '; // Before ① — ネストで書くと右から左に読む必要がある $result = implode('-', array_map( 'strtolower', explode(' ', trim($input)) )); // → 'hello-world' // Before ② — 変数を使うと今度は中間変数だらけ $trimmed = trim($input); // → 'Hello World' $words = explode(' ', $trimmed); // → ['Hello', 'World'] $lowered = array_map('strtolower', $words); // → ['hello', 'world'] $result = implode('-', $lowered); // → 'hello-world' 10
パイプ演算子 |> PHP 8.5(続き) 上から下に、素直に読める。 // After PHP 8.5 $result
= ' Hello World ' |> trim(...) // ' Hello World ' → 'Hello World' |> (fn($s) => explode(' ', $s)) // 'Hello World' → ['Hello', 'World'] |> (fn($a) => array_map(strtolower(...), $a)) // ['Hello', 'World'] → ['hello', 'world'] |> (fn($a) => implode('-', $a)); // ['hello', 'world'] → 'hello-world' // ... = 関数への参照(第一級 callable) // $a = パイプ |> から渡ってきた値 11
パイプ演算子 |> — 注意点 PHP 8.5 アロー関数は 括弧で囲わないと Fatal error(公式より)
// 括弧なし → Fatal error! $result = $input |> fn($a) => strtolower($a); // 括弧あり → OK $result = $input |> (fn($a) => strtolower($a)); 値は次の関数の 第1引数 に渡される // implode はそのままでは TypeError $arr |> implode('-', ...) // クロージャで包む $arr |> (fn($a) => implode('-', $a)) 参考(3v4l.org) 12
部分適用(予告) PHP 8.6 / 2026年11月予定 ? をプレースホルダにして、クロージャなしで書ける。 // 現状(PHP 8.5)—
クロージャが必要でもったり $result = $input |> (fn($x) => str_replace(' ', '-', $x)) |> strtolower(...); // PHP 8.6 — ? でスッキリ! $result = $input |> str_replace(' ', '-', ?) |> strtolower(...); パイプ演算子と部分適用は 2016年に同じ提案から生まれた双子 → パイプ(8.5)+ 部分適用(8.6)でついに完成形に 13
後半 技術トレンドの追いかけ方 14
今まではこうやってキャッチアップしていた php.net — 公式リリースノート(英語・重い) stitcher.io / php.watch — 英語の解説記事 Qiita
/ Zenn — 日本語記事が出るまでタイムラグあり X のタイムライン — 流れてきたら読む(見逃しも多い) → 結局「気が向いたとき」にしか追えていなかった 15
Claude Code スキルで自動収集 ~/.claude/commands/ に .md ファイルを置くだけ 「今日のトレンド」と話しかけると自動で実行 # Daily
Trend — 2026-03-25 ## ★★★ 高(今すぐ読む) - [PHP 8.6 PFA がマージ](URL) `[Hacker News]` > 部分適用が PHP 8.6 に正式採用。パイプとの組み合わせで... ## ★★☆ 中(時間があれば) - [Laravel 13.x リリース](URL) `[Zenn]` > PHP 8.3 必須化、Attributes 対応など... 16
実際の SKILL.md --- name: neta_trend_daily description: 毎朝のトレンド収集。Hacker News・はてブ・Zenn・Reddit からトレンドを取得し、興味度スコアを付与して保存する。 allowed-tools:
Bash, Write --- ## Step 1: データ取得(curl のみ) Hacker News Top 20 / はてブ IT / Zenn / Reddit r/programming ## Step 2: スコアリング claude.md の Interests に照らして ★★★ / ★★☆ / ★☆☆ を付与 ## Step 3: Ideas/daily/YYYY-MM-DD.md に保存 17
PHP 特化スキルにするなら IT 全般 → PHP に特化したスキルも作れる --- name: php_trend
description: PHP の新情報を収集。php.watch・stitcher.io・ Zenn の PHP タグを取得してまとめる。 --- 取得先を変えるだけで: php.watch の RFC ステータス変更を検知 stitcher.io の新着記事を要約 Zenn の PHP タグ のトレンドを収集 18
まとめ バージョン 機能 8.3 json_validate() / 型付き定数 8.4 Property Hooks
/ 非対称 Visibility 8.5 パイプ演算子 ` 8.6予定 部分適用 PHP は死んでいない。むしろ本気を出してきた Claude Code スキルで PHP の動向を毎朝自動把握できる 19
参考 https://www.php.net https://php.watch https://stitcher.io https://qiita.com/rana_kualu 20