25

ユーザー定義の stdClass オブジェクトに名前空間を設定できるかどうかは誰にもわかりません。

私がやりたいことは、クラスのすべてのプライベート プロパティをゲッター メソッドの形式のオブジェクトとして返すことです。

このようなことができる解決策を1つ見つけました。

public function getDataItems() {
  $dataObj = new stdClass;
  $dataObj->image_id   = $this->image_id;
  $dataObj->image_name = $this->image_name;
  $dataObj->name       = $this->name;
  $dataObj->email      = $this->email;
  $dataObj->company    = $this->company;

  return $dataObj;
}

私が持っている唯一の問題は、この関数が存在するクラスが名前空間を使用しているため、この $dataObj オブジェクトに同じ名前空間を何らかの方法で割り当てる必要があることです。

どうすればこれができるのか、それが可能かどうか誰か知っていますか?

4

1 に答える 1

73

たぶん、これを逆にして stdClass-Object の名前空間を明示的にしたいですか? これは、次のいずれかで行うことができます

use \stdClass

また

$dataObj = new \stdClass();

ところで。- いいえ、一度定義されたクラスの名前空間を変更することはできません。

ReflectionProperty別のクラスのプライベート フィールドから値にアクセスする必要がある場合は、組み込みクラスを確認することをお勧めします ( http://php.net/manual/en/reflectionproperty.getvalue.phpを参照)。

于 2012-02-02T14:31:50.880 に答える