PHP stdClass

stdClass の使い方です。
stdClass は PHP の内部であらかじめ定義されていて、自分で定義しなくてもそのまま使えます。

プログラムの作成

stdClass.php のソースコードを utf-8(BOM 無し)でタイプして c:\DATA\PHP\ に格納して下さい。
<?php
$hoge = new stdClass;
$hoge->msg = "Hellow";
$hoge->foo = 1234.56;
$hoge->bar = TRUE;
print_r($hoge);
?>

【実行画面】
コマンドプロンプトを起動して stdClass.php をコンパイルします。
stdClass.php の実効結果です。
C:\DATA\PHP>php stdClass.php
stdClass Object
(
    [msg] => Hellow
    [foo] => 1234.56
    [bar] => 1
)

C:\DATA\PHP>

プログラムの説明

  1. new stdClass; でクラスを生成して $hoge に格納します。
    $hoge = new stdClass;
    
  2. クラスのプロパティ領域として msg, foo, bar を定義します。
    最初はどんなプロパティもメソッドも持っていないので、自由に設定することが出来るようです。
    クラスの領域は->で修飾して下さい。
    $hoge->msg = "Hellow";
    $hoge->foo = 1234.56;
    $hoge->bar = TRUE;
    
  3. print_r($hoge); でクラス全体を印字します。
    print_r($hoge);
    
  4. stdClass には自由にプロパティ領域を追加することが出来るので、構造体のように使うときは便利な Class です。

プログラムの作成

stdClass に配列を追加してみます。
stdClass2.php のソースコードを utf-8(BOM 無し)でタイプして c:\DATA\PHP\ に格納して下さい。
<?php
$hoge = new stdClass;
$hoge->num = array(3,8,1,7,4);
$hoge->str = array('abc', 'nhk', 'tbs');
$hoge->val = array();
array_push($hoge->val, 1);
array_push($hoge->val, 2);
array_push($hoge->val, 3);
print_r($hoge);
?>

【実行画面】
コマンドプロンプトを起動して stdClass2.php をコンパイルします。
C:\DATA\PHP>php stdClass2.php
stdClass Object
(
    [num] => Array
        (
            [0] => 3
            [1] => 8
            [2] => 1
            [3] => 7
            [4] => 4
        )

    [str] => Array
        (
            [0] => abc
            [1] => nhk
            [2] => tbs
        )

    [val] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

)
?>

プログラムの説明

  1. new stdClass; でクラスを生成して $hoge に格納します。
    $hoge = new stdClass;
    
  2. クラスのプロパティ領域として num, str, val を定義します。
    num は数値が定義された配列で、str は文字列が定義された配列です。
    val は空の配列です。
    $hoge->num = array(3,8,1,7,4);
    $hoge->str = array('abc', 'nhk', 'tbs');
    $hoge->val = array();
    
  3. 空の配列 val に 1, 2, 3 を push で格納します。
    array_push($hoge->val, 1);
    array_push($hoge->val, 2);
    array_push($hoge->val, 3);
    
  4. print_r($hoge); でクラス全体を印字します。
    print_r($hoge);
    
  5. stdClass には自由にプロパティ領域を追加することが出来るようです。

前田稔の超初心者のプログラム入門
PHP Program