はじめに
PHPで関数やメソッドを定義するとき、引数の初期値に変数を設定したくなることはよくあります。
特に「ある変数の値をそのまま使いたい」というケースはよくありませんか?
この記事ではPHPでの正しい初期値の書き方を紹介しつつ、私がやってしまった間違いとその理由についても解説します。
「正しい使い方が知りたい」「上手く動かない原因が知りたい」というどちらの方にも役立つ内容を目指しました。
2025-05-19
PHPで関数やメソッドを定義するとき、引数の初期値に変数を設定したくなることはよくあります。
特に「ある変数の値をそのまま使いたい」というケースはよくありませんか?
この記事ではPHPでの正しい初期値の書き方を紹介しつつ、私がやってしまった間違いとその理由についても解説します。
「正しい使い方が知りたい」「上手く動かない原因が知りたい」というどちらの方にも役立つ内容を目指しました。
まずは、正しい使い方から紹介します。
例えばユーザーに挨拶をする、「greet()」関数を考えてみましょう。
「名前が指定されているならそれを使い、指定されていなければデフォルトの名前を使う」という関数です。
public function greet($name = null)
{
if ($name === null) {
$name = $this->defaultName;
}
echo "Hello, {$name}!";
}
ここでのポイントは引数に直接$this->defaultName
を書かず、いったんnull
を受け取ってから関数に代入しているところです。
というのもPHPでは引数のデフォルト値に変数を直接指定できません。(例えば$this->defaultName
)
そのため、「変数をデフォルトとして使いたいとき」は、まずnull
で受け取っておいて、関数の中で条件分岐して代入する方法が王道です。
よくある間違いは、引数のデフォルト値にそのままクラスのプロパティを指定しようとするものです。
public function greet($name = $this->defaultName) // エラー
{
echo "Hello, {$name}!";
}
このように書くとエラーが出ます!
気持ちはすごく分かりますが、「正しい使い方」のように、nullを渡して条件分岐しましょう。
関数やメソッドの引数の初期値に変数を設定する方法を紹介しました。
「nullを渡して条件分岐で指定する」というのをぜひ覚えて使ってみてください。