オブジェクトを初期化するためには、new
命令によりオブジェクトのインスタンスを変数に作成します。
<?php
class foo
{
function do_foo()
{
echo "foo を実行します。";
}
}
$bar = new foo;
$bar->do_foo();
?>
詳細な事項については、 クラスおよびオブジェクト のセクションを参照ください。
オブジェクトがオブジェクトに変換される場合はなにも修正されません。
オブジェクト以外の型の値がオブジェクトに変換される時には、stdClass
というビルトインクラス(予めPHPの内部で定義されているクラス)のインスタンスが新しく生成されます。
その際、値が null の場合は新しいインスタンスは空となります。
また、配列がオブジェクトに変換される場合、配列のキーと値がそれぞれオブジェクトのプロパティ名とその値となります。
PHP 7.2.0
より前のバージョンでは、数値のキーの場合プロパティ名によるアクセスはできなかった点に注意して下さい。
<?php
$obj = (object) array('1' => 'foo');
var_dump(isset($obj->{'1'})); // PHP 7.2.0 以降は 'bool(true)' それより前は 'bool(false)'
var_dump(key($obj)); // PHP 7.2.0 以降は 'string(1) "1"' それより前は 'int(1)'
?>
上記以外の値の場合には、scalar
という名前のメンバ変数が値を格納します。
<?php
$obj = (object) 'ciao';
echo $obj->scalar; // 'ciao' を出力します
?>