PHP でクラスなしのオブジェクトを作成する

Subodh Poudel 2023年1月30日
  1. PHP で new stdClass() を使用してクラスのないオブジェクトを作成する
  2. object データ型を使用して配列をオブジェクトに型キャストし、クラスを作成せずにオブジェクトを作成する
  3. PHP で json_dencode() 関数を使用してクラスを作成せずにオブジェクトを作成する
PHP でクラスなしのオブジェクトを作成する

この記事では、PHP でクラスを作成せずにオブジェクトを作成するメソッドを紹介します。

PHP で new stdClass() を使用してクラスのないオブジェクトを作成する

PHP で基本クラスを作成せずに、stdClass() からオブジェクトを作成できます。new 演算子を使用して、stdClass() のオブジェクトを作成できます。オブジェクトは、プロパティを呼び出すことにより、プロパティに直接アクセスできます。したがって、stdClass() を使用して動的オブジェクトとプロパティを作成できます。配列がオブジェクトに型キャストされると、コンパイラは stdClass() のインスタンスを作成します。

たとえば、変数 $object を作成し、new 演算子によって作成された stdClass() のインスタンスを格納します。$object オブジェクトから変数 property を呼び出し、文字列を割り当てます。文字列 I am an object's property を割り当てます。バックスラッシュ\を使用して、テキスト内のアポストロフィをエスケープします。$object 変数に var_dump() 関数を適用して、変数に関する情報をダンプします。

以下の例では、stdClass() のオブジェクトを作成し、オブジェクトのプロパティに値を即座に割り当てました。オブジェクトをダンプすると、出力に作成された stdClass クラスのオブジェクトが表示されます。したがって、PHP で基本クラスを作成せずにオブジェクトを作成できます。

サンプルコード:

#php 7.x
<?php
$object = new stdClass();
$object->property = 'I am an object\'s property';
var_dump($object);
?>

出力:

object(stdClass)#1 (1) { ["property"]=> string(25) "I am an object's property" }

object データ型を使用して配列をオブジェクトに型キャストし、クラスを作成せずにオブジェクトを作成する

PHP でクラスを作成せずにオブジェクトを作成し、object データ型を使用して型をオブジェクトに型キャストすることができます。配列を stdClass オブジェクトに型キャストできます。object キーワードは、配列が配列をオブジェクトにタイプキャストする直前に括弧で囲まれます。タイプキャストされたオブジェクトに関する情報を表示する最初のメソッドとして、var_dump() 関数を使用できます。

たとえば、変数 $place を作成し、その中に配列を格納します。配列には、citycountry のキーと、PokharaNepal のそれぞれの値が含まれています。$place 変数を新しい $obj 変数に割り当てます。$place 変数の直前に括弧で囲まれた object データ型を記述します。$obj をパラメータとして var_dump() 関数を呼び出します。

以下の例では、配列をオブジェクトにタイプキャストします。var_dump() 関数は、出力セクションに $obj オブジェクトを表示します。これは、それが stdClass オブジェクトであることを示しています。型キャストがどのように機能するかについては、PHP マニュアルを確認してください。

コード例:

#php 7.x
<?php
$place = ['city' => 'Pokhara', 'country' =>'Nepal'];
$obj = (object) $place;
var_dump($obj);
?>

出力:

object(stdClass)#1 (2) { ["city"]=> string(7) "Pokhara" ["country"]=> string(5) "Nepal" }

PHP で json_dencode() 関数を使用してクラスを作成せずにオブジェクトを作成する

json_decode() 関数は、JSON 文字列を PHP オブジェクトに変換します。この関数は、オブジェクトに変換される文字列パラメータを取ります。この関数は、オプションのブールパラメータも取ります。このブールパラメータのデフォルト値は false で、JSON オブジェクトを PHP オブジェクトに変換します。値が true の場合、JSON オブジェクトを連想配列に変換します。

たとえば、変数 $jsonobj を作成し、それに JSON オブジェクトを保存します。オブジェクトには、キーとして HarryTony、および Juan が含まれ、それぞれの値として整数値 2724、および 32 が含まれます。キーと値のペアは中括弧で囲まれています。JSON オブジェクトは、文字列として引用符で囲まれています。次に、$jsonobj 変数で json_decode() 関数を使用します。var_dump() 関数を json_encode() 関数に適用して、エンコードされたオブジェクトに関する情報を表示します。

以下の例では、json_encode() 関数が JSON オブジェクトを stdClass の PHP オブジェクトに変換します。var_dump() 関数は、オブジェクトのプロパティと値を表示します。したがって、PHP でクラスを作成せずにオブジェクトを作成しました。また、値のタイプも表示されます。json_decode() 関数の詳細については、PHP マニュアルを確認してください。

サンプルコード:

# php 7.x
<?php
$jsonobj = '{"Harry":27,"Tony":24,"Juan":32}';
var_dump(json_decode($jsonobj));
?>

出力:

object(stdClass)#1 (3) { ["Harry"]=> int(27) ["Tony"]=> int(24) ["Juan"]=> int(32) }
著者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

関連記事 - PHP Object