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