Изменить имя свойства объекта PHP - PullRequest
12 голосов
/ 24 мая 2011

В PHP можно изменить ключ / имя свойства Objects? Например:

stdClass Object
(
     [cpus] => 2
     [created_at] => 2011-05-23T01:28:29-07:00
     [memory] => 256
)

Я хочу изменить ключ created_at на created в Объекте, оставляя объект, который выглядит следующим образом:

stdClass Object
(
     [cpus] => 2
     [created] => 2011-05-23T01:28:29-07:00
     [memory] => 256
)

Ответы [ 3 ]

16 голосов
/ 24 мая 2011
$object->created = $object->created_at;
unset($object->created_at);

Что-то вроде класса адаптера может быть более надежным выбором, в зависимости от того, где и как часто эта операция необходима.

class PC {
    public $cpus;
    public $created;
    public $memory;

    public function __construct($obj) {
        $this->cpus    = $obj->cpu;
        $this->created = $obj->created_at;
        $this->memory  = $obj->memory;
    }
}

$object = new PC($object);
6 голосов
/ 24 мая 2011

Нет, поскольку ключ является ссылкой на значение, а не само значение. Лучше всего скопировать оригинал, а затем удалить его.

$obj->created = $obj->created_at;
unset(obj->created_at);
0 голосов
/ 24 мая 2011

Он похож на адаптер @deceze, но без необходимости создавать дополнительный класс

$object = (object) array(
  'cpus'    => $obj->cpus,
  'created' => $obj->created_at,
  'memory'  => $obj->memory
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...