Настройка пространства имен для объекта stdClass в PHP - PullRequest
18 голосов
/ 02 февраля 2012

Может кто-нибудь узнает, возможно ли установить пространство имен для определенного пользователем объекта stdClass.

Что я хотел бы сделать, это вернуть все частные свойства класса в виде объекта в форме метода получения.

Я нашел одно возможное решение, где я мог бы сделать что-то вроде этого;

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.

Кто-нибудь знает, как я могу это сделать или вообще возможно?

1 Ответ

49 голосов
/ 02 февраля 2012

Может быть, вы хотите сделать это наоборот и сделать пространство имен stdClass-Object явным?Это может быть сделано либо

use \stdClass

или

$dataObj = new \stdClass();

кстати.- нет, невозможно изменить пространство имен класса после его определения.

Возможно, вы захотите проверить встроенный класс ReflectionProperty, если вам нужен доступ к значениям из частного поля.другого класса (см. http://php.net/manual/en/reflectionproperty.getvalue.php).

...