Подтвердить что ты не робот

Изменение имени свойства объекта PHP

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

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
)
4b9b3361

Ответ 1

$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);

Ответ 2

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

$obj->created = $obj->created_at;
unset(obj->created_at);

Ответ 3

Схож с адаптером @deceze, но без необходимости создания дополнительного класса

$object = (object) array(
  'cpus'    => $obj->cpus,
  'created' => $obj->created_at,
  'memory'  => $obj->memory
);