web-dev-qa-db-ja.com

PHP)でstdClassオブジェクトの名前空間を設定する

ユーザー定義のstdClassオブジェクトに名前空間を設定できるかどうか誰かが知っているだろうか。

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

私はこのようなことをすることができる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オブジェクトに同じ名前空間を何らかの方法で割り当てる必要があります。

誰かが私がこれを行う方法を知っていますか、それが可能かどうかさえ知っていますか?

18
Skittles

これを逆にして、stdClass-Objectの名前空間を明示的にしたいと思うかもしれません。これはどちらかによって行うことができます

use \stdClass

または

$dataObj = new \stdClass();

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

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

50