🐘

配列型プロパティのデフォルト値は空配列?NULL?

に公開

配列型プロパティのデフォルト値を「[](空配列)」にするか「null」にするかは、用途と設計方針によって決まりますが、現代のPHPでは「空配列([])」をデフォルト値にするのがベストプラクティスとされています


理由とベストプラクティス

  • 型安全性・可読性の向上
    プロパティに型宣言(例: array型や?array型)を付ける場合、[]をデフォルト値にしておくことで、プロパティが常に配列として扱われ、予期しない型エラーやissetチェックの乱用を防げます。
  • 初期化忘れによるバグ防止
    デフォルトでnullにしていると、利用時にis_nullissetでのチェックや、$prop ?? []のような記述が必要になり、コードが冗長になります。
  • 空配列の初期化は一般的な慣習
    配列プロパティの初期値は[]とするのが現代のPHPコーディングスタイルであり、公式ドキュメントや多くのベストプラクティス集でも推奨されています。

class User {
    public array $tags = []; // ベストプラクティス
}

例外的にnullを使うケース

  • 「値が未設定かつ未初期化である」こと自体に意味がある場合(例: DBのnullableカラムを表現したいとき)
  • nullと空配列を明確に区別したい業務要件がある場合

まとめ

  • 特別な理由がなければ、配列型プロパティのデフォルト値は[](空配列)がベストプラクティス
  • 型宣言と組み合わせることで、より堅牢で読みやすいコードになります

一般的な用途や現代的なPHPプロジェクトでは「空配列([])」をデフォルト値にするのが推奨されます。

Discussion