PHPのオブジェクトとは?基本概念からstdClass、配列との型変換までわかりやすく解説
PHPにおいてオブジェクト(Object)は、配列と並ぶ複合データ型の一つです。複数の異なる型の値をひとつの変数にまとめて格納できるのが特徴で、オブジェクトは組み込みクラス、あるいはユーザー定義クラスのインスタンスとして生成されます。クラスはプロパティ(データ)を保持するだけでなく、そのデータに関連付けられた機能(メソッド)も定義できます。
スカラー値の変数や配列、さらには他のオブジェクトも、キャスト演算子を使ってオブジェクト型へ変換することが可能です。PHPではstdClassという汎用的な空のクラスが用意されており、プロパティを動的に追加したりキャストを行ったりする際に便利です。
オブジェクトの宣言方法(構文)
クラスのオブジェクト(インスタンス)を生成するには、new文を使用します。
class myclass
{
// クラスの定義
}
$obj = new myclass;実例:クラスからオブジェクトを生成する
<?php
class SayHello{
function hello(){
echo "Hello World";
}
}
$obj = new SayHello;
$obj->hello();
?>出力結果
Hello World
stdClassにプロパティを動的に追加する
stdClassのオブジェクトは初期状態では空(null)です。そこにプロパティを動的に追加することができます。
<?php $obj = new stdClass; $obj->name = "Deepak"; $obj->age = 21; $obj->marks = 75; print_r($obj); ?>
出力結果
stdClass Object(
[name] => Deepak
[age] => 21
[marks] => 75
)配列をオブジェクトに型変換(キャスト)する
連想配列は次のようにしてオブジェクトへキャストできます。キーがプロパティ名になります。
<?php
$arr = array("name"=>"Deepak", "age"=>21, "marks"=>75);
$obj = (object)$arr;
print_r($obj);
?>出力結果
stdClass Object(
[name] => Deepak
[age] => 21
[marks] => 75
)オブジェクトを配列に型変換する
逆に、オブジェクトを配列へキャストすることも可能です。プロパティが配列のキーに対応します。
<?php $obj = new stdClass; $obj->name = "Deepak"; $obj->age = 21; $obj->marks = 75; $arr = (array)$obj; print_r($arr); ?>
出力結果
Array(
[name] => Deepak
[age] => 21
[marks] => 75
)スカラー値をオブジェクトに変換する
文字列や数値などの任意のスカラー型の値も、キャストによってオブジェクトへ変換できます。この場合、スカラー変数の値はオブジェクトのscalarというプロパティに格納されます。
<?php $name = "Deepak"; $age = 21; $percent = 75.50; $obj1 = (object)$name; print_r($obj1); $obj2 = (object)$age; print_r($obj2); $obj3 = (object)$percent; print_r($obj3); ?>
出力結果
stdClass Object(
[scalar] => Deepak
)
stdClass Object(
[scalar] => 21
)
stdClass Object(
[scalar] => 75.5
)まとめ
PHPのオブジェクトは、データと機能をひとつにまとめた複合データ型です。new文によるクラスのインスタンス化をはじめ、stdClassへの動的なプロパティ追加、配列⇔オブジェクトの相互変換、スカラー値のキャストなど、柔軟な扱い方ができるため、実務でも頻繁に活用されます。特にAPIレスポンスの処理などでは配列とオブジェクトの変換が役立つ場面が多いので、ぜひ覚えておきましょう。
-
PHPのget_object_vars()関数の使い方を徹底解説
PHPのget_object_vars()関数は、指定されたオブジェクトが持つプロパティを取得するための関数です。オブジェクト内で定義されているプロパティを、プロパティ名をキーとした連想配列の形式で返します。 構文 get_object_vars(object) パラメータ object − プロパティを取得したいオブジェクトのインスタンスを指定します。 戻り値 get_object_vars()関数は、指定されたオブジェクトの定義済みプロパティを連想配列として返します。まだ値が代入されていないプロパティについては、NULLが返されます。 なお、この関数をクラスの外部から呼び出した場合、取
-
Pythonコードオブジェクトとは?生成方法と主な属性を解説
Pythonコードオブジェクトとはコードオブジェクト(code object)は、CPython実装における低レベルな内部構造の一つです。それぞれのコードオブジェクトは、まだ関数へと束縛されていない「実行可能なコードの断片」を表します。コードオブジェクトは実行可能なコードを保持していますが、それ自体を直接呼び出すことはできません。実際に実行するには、組み込み関数 exec() を使用する必要があります。コードオブジェクトは、組み込み関数 compile() を使って文字列から生成できます。compile(ソース, ファイル名, モード) の形式で呼び出し、モードには exec を指定するのが一