PHP チートシート
検索・印刷できる PHP 8.3+ のリファレンス — 構文、文字列、配列、関数、クラス、enum、属性、モダンな機能。無料。
基本と型
10declare(strict_types=1);
厳格なスカラー型チェックを強制
$x = 1;
変数はドル記号で始まる
const MAX = 100;
コンパイル時定数
gettype($x)
値の型を取得
(int) $x
整数にキャスト
is_int($x)
型チェックヘルパー (is_string, ...)
int|string $x
ユニオン型の宣言
?string $x
Null許容型 (string または null)
$a ?? 'default'
Null合体演算子
$a ??= 'default'
null の場合のみ代入
文字列
11"Hello $name"
二重引用符は変数を補間
'literal $x'
単一引用符はそのまま
$a . $b
文字列を連結
strlen($s)
文字列のバイト長
str_contains($s, 'a')
部分文字列を確認
str_starts_with($s, 'a')
接頭辞を確認
substr($s, 0, 3)
文字列の一部を抽出
str_replace('a', 'b', $s)
すべての出現を置換
explode(',', $s)
配列に分割
sprintf('%05.2f', $n)
書式付き文字列出力
trim($s)
前後の空白を除去
配列
11$a = [1, 2, 3];
添字配列リテラル
$a = ['k' => 'v'];
連想配列
array_map(fn($x) => $x * 2, $a)
各要素を変換
array_filter($a, fn($x) => $x > 0)
一致する要素を保持
array_reduce($a, $fn, 0)
単一の値に集約
in_array($v, $a, true)
厳密な値チェック
array_keys($a)
すべてのキーを取得
array_merge($a, $b)
配列を結合
[...$a, ...$b]
配列を展開/結合
count($a)
要素数
[$x, $y] = $a;
配列の分割代入
関数
9function f(int $a): int {}
型付き引数と戻り値
function f(int $a = 1) {}
デフォルト引数値
function f(int ...$nums) {}
可変長引数
f(...$args)
引数を展開
f(name: 'Sam', age: 30)
名前付き引数
$fn = fn($x) => $x + 1;
アロー関数 (スコープを自動取得)
function () use ($x) {}
変数を取り込むクロージャ
$fn = strlen(...);
第一級呼び出し可能構文
function f(): never {}
決して返らない (throw または exit)
制御フロー
9if ($a) {} elseif ($b) {} else {}
条件分岐
$a ? $b : $c
三項演算子
$a ?: $b
短縮三項演算子 (falsy のフォールバック)
match ($x) { 1, 2 => 'a', default => 'b' }
厳密な式ベースの match
switch ($x) { case 1: break; }
緩い多方向分岐
foreach ($a as $k => $v) {}
キーと値を反復
for ($i = 0; $i < 10; $i++) {}
回数指定ループ
while ($cond) {}
条件が真の間ループ
break / continue
ループの反復を中断またはスキップ
クラスと OOP
10class A extends B implements C {}
継承とインターフェース
public function __construct(private int $id) {}
コンストラクタのプロパティ昇格
public readonly string $name;
初期化後は不変
public function f(): static {}
遅延束縛された型を返す
static::create()
遅延静的束縛
$obj?->method()
Nullセーフなメソッド呼び出し
abstract class A {}
直接インスタンス化不可
trait T {} use T;
再利用可能な水平コード
$obj instanceof A
実行時の型チェック
A::class
完全修飾クラス名の文字列
列挙型
9enum Status { case Active; case Draft; }
純粋な列挙
enum Status: string { case A = 'a'; }
値を持つ列挙 (string/int)
Status::Active
列挙ケースを参照
Status::from('a')
値からケースを生成
Status::tryFrom('x')
無効なら null を返す
Status::cases()
全ケースの配列
$status->value
ケースの値
$status->name
ケースの名前
enum E { public function label() {} }
列挙型はメソッドを持てる
エラー処理
9try {} catch (Throwable $e) {}
エラーと例外を捕捉
catch (TypeError | ValueError $e)
複数の型を捕捉
catch (Exception)
変数なしの catch
finally {}
try/catch の後で必ず実行
throw new RuntimeException('x')
例外をスロー
throw $e;
捕捉した例外を再スロー
$x = $v ?? throw new Error();
式として throw
$e->getMessage()
エラーメッセージを読む
$e->getPrevious()
連鎖した例外を取得
属性とモダン機能
9#[Attribute] class Route {}
カスタム属性を宣言
#[Route('/home')]
対象に属性を適用
new ReflectionClass($x)
リフレクションでクラスを検査
$ref->getAttributes()
宣言された属性を読む
json_encode($data)
JSON にシリアライズ
json_decode($s, true)
JSON を配列にデコード
array_is_list($a)
キーが順に 0..n なら true
str_word_count($s)
文字列内の単語数を数える
$obj::class
インスタンスからクラス名を取得
「:q」に一致する項目はありません。
お困りですか?
このツールで問題が見つかりましたか?チームにお知らせください。