最近他の人が作ったプログラムの改修作業が在ったのですが、その中で stdClass を使っていて
私は使ったことが無かったので少し調べてみたところ、連想配列の様な使い方ができることを知りました。
クラスを使う場合、普通は別のクラス宣言でクラス名を付けますが stdClass は無名クラスとして クラスオブジェクトを生成する様です。
以下のソースは stdClass を生成し2個のプロパティへの代入を行う簡単な例です。
stdClass で生成されたオブジェクトに対して、プロパティを指定する時点で、 内部的にそのプロパティが生成されるようです。
結果は以下の表示になります。
2個のプロパティに値が設定されていることが確認できます。
尚、このソースに stdVal3 というプロパティを参照する様にしてみます。
この結果は以下の様に、Notice エラーが発生します。
代入設定されていないプロパティを参照することはできない様です。
この stdClass ですが配列に変換することができます。 以下のソースでは stdClass オブジェクトを array オブジェクトに代入し変換しています。
上のソースから stdClass は連想配列的であることが分かります。
尚、 stdVal1 とソース上固定の記述のみしか扱えないわけでは無く、 次の例では stdVal1 の参照を変数を用いて行う方法を示します。
オブジェクトのプロパティを変数で扱えると応用がいろいろ利くと思います。
■関連記事
⇒【PHP】可変変数と可変クラスの使い方について
⇒【PHP】配列の中に参照変数を持つことで別々の変数の要素を操作する
⇒【PHP】配列の代入はクローンコピーになる
⇒【PHP】連想配列の様な「stdClass」の使い方について
⇒【PHP】POSTやGETなどのスーパーグローバル変数のアクセスはfilter_inputを使う方が安全らしい
⇒【PHP】array_keys:指定キー検索で見つからない場合の結果は何が返る
クラスを使う場合、普通は別のクラス宣言でクラス名を付けますが stdClass は無名クラスとして クラスオブジェクトを生成する様です。
以下のソースは stdClass を生成し2個のプロパティへの代入を行う簡単な例です。
stdClass で生成されたオブジェクトに対して、プロパティを指定する時点で、 内部的にそのプロパティが生成されるようです。
結果は以下の表示になります。
2個のプロパティに値が設定されていることが確認できます。
尚、このソースに stdVal3 というプロパティを参照する様にしてみます。
この結果は以下の様に、Notice エラーが発生します。
代入設定されていないプロパティを参照することはできない様です。
この stdClass ですが配列に変換することができます。 以下のソースでは stdClass オブジェクトを array オブジェクトに代入し変換しています。
上のソースから stdClass は連想配列的であることが分かります。
尚、 stdVal1 とソース上固定の記述のみしか扱えないわけでは無く、 次の例では stdVal1 の参照を変数を用いて行う方法を示します。
オブジェクトのプロパティを変数で扱えると応用がいろいろ利くと思います。
■関連記事
⇒【PHP】可変変数と可変クラスの使い方について
⇒【PHP】配列の中に参照変数を持つことで別々の変数の要素を操作する
⇒【PHP】配列の代入はクローンコピーになる
⇒【PHP】連想配列の様な「stdClass」の使い方について
⇒【PHP】POSTやGETなどのスーパーグローバル変数のアクセスはfilter_inputを使う方が安全らしい
⇒【PHP】array_keys:指定キー検索で見つからない場合の結果は何が返る