- array_map: documentation ( source)
- var_dump: documentation ( source)
- array_keys: documentation ( source)
- array_diff: documentation ( source)
<?php
class Foo
{
public $bar;
public $baz;
public $taz;
}
// please note that this API has a signature of `object $object` - any object allowed.
function unsetProperties($object) {
// we ignore inheritance and private properties for simplicity
return array_diff(
array_map(
function (\ReflectionProperty $p) : string {
return $p->getName();
},
(new ReflectionClass($object))->getProperties()
),
array_keys((array) $object)
);
}
var_dump(unsetProperties(new Foo));
$foo = new Foo;
unset($foo->baz);
var_dump(unsetProperties($foo));