概要

型宣言 (type hint / type declaration) は 「この引数には何型の値が来るか」「この関数は何型の値を返すか」を関数の入り口と出口で明示する仕組み だ。function add(int $a, int $b): int { ... } のように書いておくと、文字列を渡したり戻り値を別の型にしたりすると即座にエラーになり、バグが本来の発生箇所からずっと離れて現れる事故を防げる。コードを後から読む人にとっても「何が入って何が出るか」がコメントなしで分かるドキュメントになる。

PHP では int float string bool array などの基本型に加えて、クラス名や null 許容 (?int) も型に書ける。戻り値の型は引数リストの後ろに ): 型 の形で付ける。型に合わない値が来たときの挙動は declare(strict_types=1); の有無で変わるが、本チャプターでは「とりあえず宣言を書く」習慣を作るところを目標にする。

PHP 8 では 共用体型 (union type) が導入され、function f(int|string $x): int|string のように「int か string のどちらか」と書けるようになった。なんでも受け付ける関数を作りたくなったとき、mixed で逃げる前に int|string のような具体的な共用体で意図を残せると、後から読むコードが格段に分かりやすくなる。

学習目標

ドリル

no 内容
01 add(int $a, int $b): int を作る
02 repeat(string $s, int $n): string を作る

演習: ドリル 01 — add(int $a, int $b): int を作る

問題

引数を 2 つ受け取り、その合計を返す関数 add を、型宣言付きで定義してください。

定義した後、add(1, 2)add(10, 20)add(100, 250) の戻り値を 1 行ずつ出力してください。

期待される出力:

3
30
350

ヒント

演習: ドリル 02 — repeat(string $s, int $n): string を作る

問題

文字列 $s$n 回繰り返した文字列を返す関数 repeat を、型宣言付きで定義してください。

定義した後、次の 3 件の戻り値を 1 行ずつ出力してください。

  1. repeat("ab", 3)
  2. repeat("ok", 2)
  3. repeat("-", 5)

期待される出力:

ababab
okok
-----

ヒント

この章を AI に聞く

  1. 「ch05 — 型宣言」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch05 — 型宣言」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch05 — 型宣言」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch05 — 型宣言」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE