【完全解説】PHP型宣言を初心者でも理解できる10のステップ

PHP型宣言のイラストPHP
この記事は約5分で読めます。

※本記事のコンテンツは、利用目的を問わずご活用いただけます。実務経験10000時間以上のエンジニアが監修しており、基礎知識があれば初心者にも理解していただけるように、常に解説内容のわかりやすさや記事の品質に注力しております。不具合・分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。(理解できない部分などの個別相談も無償で承っております)
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

PHPの型宣言について学びたいと思っているあなたへ、この記事はまさにそのために書かれました。

ここでは、PHPの型宣言の基本から応用まで、初心者でも理解できる形で詳しく解説します。

この記事を読むことで、PHPの型宣言についての理解が深まり、自分のコードをより安全に、そして効率的に書くことができるようになるでしょう。

●PHPとは

PHPは、Webサイトのバックエンドを構築するためのサーバーサイドスクリプト言語です。

その特徴は、シンプルで学びやすいこと、そして強力な機能を持っていることです。

PHPは、FacebookやWikipediaなどの大規模なWebサイトでも使用されています。

●PHPの型宣言とは

PHPは動的型付け言語で、変数の型を宣言する必要はありません。

しかし、PHP7からは型宣言が導入され、より安全にコードを書くことが可能になりました。

型宣言を使用すると、関数やメソッドの引数や戻り値の型を指定することができます。

これにより、予期しない型のデータが関数やメソッドに渡されることを防ぐことができます。

○基本的な型宣言

PHPで使用できる基本的な型は次の通りです。

  • string:文字列
  • int:整数
  • float:浮動小数点数
  • bool:ブール値(trueまたはfalse)
  • array:配列
  • object:オブジェクト
  • mixed:任意の型

これらの型を使用して、関数やメソッドの引数や戻り値の型を宣言することができます。

●PHPの型宣言の使い方

それでは、具体的にPHPの型宣言がどのように使われるのかを見ていきましょう。

いくつかサンプルコードを紹介します。

○サンプルコード1:基本的な型宣言

このコードでは、関数sayHelloの引数$nameにstring型を指定しています。

また、戻り値の型としてvoidを指定しています。これは、この関数が何も返さないことを示しています。

この関数に非文字列を渡すと、PHPはTypeErrorをスローします。

function sayHello(string $name): void {
    echo "Hello, " . $name;
}

○サンプルコード2:関数の引数と戻り値の型宣言

このコードでは、関数multiplyの引数$aと$bにint型を指定しています。また、戻り値の型としてintを指定しています。

この関数に非整数を渡すと、PHPはTypeErrorをスローします。

function multiply(int $a, int $b): int {
    return $a * $b;
}

○サンプルコード3:クラスのプロパティの型宣言

このコードでは、クラスUserのプロパティ$nameと$ageの型をそれぞれstringとintで宣言しています。

これにより、これらのプロパティに対して非互換の型の値を設定しようとすると、PHPはTypeErrorをスローします。

class User {
    public string $name;
    public int $age;
}

●PHPの型宣言の応用例

それでは、より高度な型宣言の例を見てみましょう。

○サンプルコード4:配列の型宣言

このコードでは、関数getValuesの引数$arrayにarray型を指定しています。

また、戻り値の型としてもarrayを指定しています。この関数に非配列を渡すと、PHPはTypeErrorをスローします。

function getValues(array $array): array {
    return array_values($array);
}

○サンプルコード5:オブジェクトの型宣言

このコードでは、関数greetの引数$userにUserクラスのインスタンスを指定しています。

この関数にUserクラスのインスタンス以外を渡すと、PHPはTypeErrorをスローします。

class User {
    public string $name;
    public int $age;
}

function greet(User $user): void {
    echo "Hello, " . $user->name;
}

○サンプルコード6:ユニオン型の型宣言

このコードでは、関数printValueの引数$valueにint型またはstring型を指定しています。

これはユニオン型と呼ばれ、引数が複数の型のいずれかであることを示します。

この関数にint型またはstring型以外を渡すと、PHPはTypeErrorをスローします。

function printValue(int|string $value): void {
    echo $value;
}

●PHPの型宣言の注意点と対処法

PHPの型宣言は非常に便利ですが、注意点もあります。

一つは、型宣言は強制的ではないということです。つまり、型宣言を使用しないとエラーになるわけではありません。

しかし、型宣言を使用することで、コードの安全性と可読性が向上します。

また、PHPの型宣言は、デフォルトでは弱い型チェックを行います。

つまり、引数の型が宣言された型と一致しない場合でも、可能な限り型を変換しようとします。

しかし、これは予期しない結果をもたらす可能性があります。

そのため、厳密な型チェックを行いたい場合は、ファイルの先頭に declare(strict_types=1); を追加することで、強い型チェックを有効にすることができます。

●PHPの型宣言のカスタマイズ方法

PHPの型宣言は、基本的な型だけでなく、自分で定義したクラスやインターフェース、トレイトなども指定することができます。

これにより、より具体的な型制約を設けることが可能になります。

また、PHP8からは、mixed型やユニオン型、属性など、さらに高度な型宣言が可能になりました。

まとめ

この記事では、PHPの型宣言について詳しく解説しました。

型宣言を使用することで、コードの安全性と可読性が向上し、バグの発生を防ぐことができます。

また、型宣言はPHPの進化と共にさらに強力なツールになってきています。

これからもPHPのアップデートに注目しながら、最新の型宣言の使い方を学んでいきましょう。