Изменение имени свойства объекта 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
)
Ответы
Ответ 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
);