こんにちは、Naka です。

PHPで開発していると、次のような場面に心当たりがある人は多いはずです。

これらは開発効率の低下につながります。本記事では、これらの問題を解決する方法を解説します。

1. 配列ではなくオブジェクトを使用する

PHPの配列は便利なため、意味のある文字列キー(例: first_name, last_name など)を持たせて「名前付きフィールドを持つデータ構造」として扱うことがしばしばあります。しかし、PHP上ではTypeScriptのオブジェクト型のようにIDEに型の情報を伝えられません。こうした場合は、配列ではなくオブジェクトとして表現する方が適しています。

配列の例

$user = [
    'first_name' =>'オルト',
    'last_name' =>'太郎',
];
$fullName = $user['first_name'] .' ' .$user['last_name'];

このコードでは、IDEは $user のキーを把握できず、意図しないキーアクセスやタイポを検出できません。

オブジェクトの例

class User
{
    public function __construct(
        public string $firstName,
        public string $lastName,
    ) {}
}

$user = new User('オルト','太郎');
$fullName = $user->firstName .' ' .$user->lastName;

image.png

オブジェクト化することで、IDEは firstNamelastName をプロパティとして認識でき、補完や型チェックが有効になります。

Laravel Dataの活用

APIレスポンスなど大量の配列データを扱う場合、それらを一つずつ手動でオブジェクト化するのは手間になります。Laravel Data を使うと、配列データを型付きオブジェクトとして容易に扱えます。具体的には以下のことが可能です。