PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのget_object_vars()関数の使い方を徹底解説

PHPのget_object_vars()関数は、指定されたオブジェクトが持つプロパティを取得するための関数です。オブジェクト内で定義されているプロパティを、プロパティ名をキーとした連想配列の形式で返します。

構文

get_object_vars(object)

パラメータ

  • object − プロパティを取得したいオブジェクトのインスタンスを指定します。

戻り値

get_object_vars()関数は、指定されたオブジェクトの定義済みプロパティを連想配列として返します。まだ値が代入されていないプロパティについては、NULLが返されます。

なお、この関数をクラスの外部から呼び出した場合、取得できるのはpublic(公開)プロパティのみです。クラス内部から呼び出した場合は、privateやprotectedを含む、そのスコープからアクセス可能なすべてのプロパティが取得されます。

使用例

以下に、get_object_vars()関数を使用したサンプルコードを示します。

<?php
   class Point2D {
      var $x, $y;
      var $label;

      function Point2D($x, $y) {
         $this->x = $x;
         $this->y = $y;
      }

      function setLabel($label) {
         $this->label = $label;
      }

      function getPoint() {
         return array("x" => $this->x, "y" => $this->y, "label" => $this->label);
      }
   }
   $p1 = new Point2D(9.675, 8.321);
   print_r(get_object_vars($p1));

   $p1->setLabel("point #1");
   print_r(get_object_vars($p1));

?>

※ このサンプルはPHP 4時代の古いコンストラクタ記法(クラス名と同名のメソッド)を使用しています。PHP 5以降では、コンストラクタは__construct()として定義するのが標準的な書き方です。また、「var」によるプロパティ宣言も、現在では「public」を使うのが一般的です。

実行結果

上記のコードを実行すると、次のような出力が得られます。

Array (
   [x] => 9.675
   [y] => 8.321
   [label] =>
)
Array (
   [x] => 9.675
   [y] => 8.321
   [label] => point #1
)

最初のprint_r()では、labelプロパティにまだ値が代入されていないためNULL(空)で出力されています。その後、setLabel()メソッドで値を設定すると、2回目のget_object_vars()の実行結果に「point #1」という値が反映されていることが確認できます。このようにget_object_vars()関数を使うことで、オブジェクトの状態を手軽に配列として取得・確認できます。

  1. PHPのis_a()関数の使い方を徹底解説!オブジェクトのクラス判定方法

    PHPのis_a()関数は、オブジェクトが指定したクラスのインスタンスであるか、あるいはそのクラスを親(祖先)に持つかどうかを判定するための関数です。条件に一致すればTRUE、一致しなければFALSEを返します。この関数は、インターフェースを実装しているかどうかの確認にも利用できるため、オブジェクト指向プログラミングにおいて型チェックを行う際に非常に便利です。構文is_a(object, class)パラメータobject − 判定対象となるオブジェクトを指定します。class − 判定するクラス名またはインターフェース名を文字列で指定します。戻り値

  2. PHPのget_class()関数とは?使い方とサンプルコードを解説

    PHPのget_class()関数は、オブジェクトが属するクラス名を取得するための関数です。引数に渡された値がオブジェクトでない場合にはFALSEを返します。また、クラス内部でobject引数を省略して呼び出した場合には、そのクラス自身の名前が返されます。構文get_class(object)パラメータobject  − 検査対象となるオブジェクトです。クラスの内部で呼び出す場合は、このパラメータを省略できます。戻り値get_class()関数は、指定されたオブジェクトのクラス名を文字列として返します。引数がオブジェクトでない場合はFALSEを返します。クラス内部