2011-05-24 25 views
12

En PHP, ¿es posible cambiar una clave/nombre de propiedad de Objetos? Por ejemplo:Modificar nombre de propiedad de objeto PHP

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

deseo de cambiar la clave created_at a created en el objeto de dejar un objeto que se parece a:

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

Respuesta

15
$object->created = $object->created_at; 
unset($object->created_at); 

Algo así como una clase adaptador puede ser una opción más robusta sin embargo, dependiendo de dónde y con qué frecuencia es necesaria esta operación.

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

No, ya que la clave es una referencia al valor, y no un valor en sí mismo. Será mejor que copie el original y luego lo quite.

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

Su similar a @deceze adaptador, pero sin la necesidad de crear una clase extra

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