¿Es posible eliminar la propiedad de un objeto en PHP?
Si tengo algo stdObject
que decir $a
,.
Seguro que no hay problema en asignar una nueva propiedad $a
,
$a->new_property = $xyz;
Pero luego quiero eliminarlo, por lo unset
que no sirve de nada.
Entonces,
$a->new_property = null;
es algo así. ¿Pero existe una forma más 'elegante'?
unset($a->new_property);
Esto funciona para elementos de matriz, variables y atributos de objetos.
Ejemplo:
$a = new stdClass();
$a->new_property = 'foo';
var_export($a); // -> stdClass::__set_state(array('new_property' => 'foo'))
unset($a->new_property);
var_export($a); // -> stdClass::__set_state(array())
Esto también funciona especialmente si estás recorriendo un objeto.
unset($object[$key])
Actualizar
Las versiones más nuevas de PHP arrojan un error fatal Fatal error: Cannot use object of type Object as array
como lo menciona @CXJ. En ese caso, puedes usar corchetes en su lugar.
unset($object->{$key})
Establezca un elemento en nulo, simplemente establezca el valor del elemento en nulo, el elemento aún existe
Desarmar un elemento significa eliminar el elemento, funciona para matrices, objetos stdClass, clases definidas por el usuario y también para cualquier variable.
<?php
$a = new stdClass();
$a->one = 1;
$a->two = 2;
var_export($a);
unset($a->one);
var_export($a);
class myClass
{
public $one = 1;
public $two = 2;
}
$instance = new myClass();
var_export($instance);
unset($instance->one);
var_export($instance);
$anyvariable = 'anyValue';
var_export($anyvariable);
unset($anyvariable);
var_export($anyvariable);
Esto también funciona si estás recorriendo un objeto.
unset($object->$key);
No es necesario utilizar soportes.