Is it possible to inherit the properties of a non-class object to another variable?
<?php $obj1 = (object)[ "prop1" => "String", "prop2" => "INT" ]; $obj2 = new $obj1; var_dump($obj2->prop1); // output : Notice: Undefined property: stdClass::$prop1 ?>
I can do instead:
$obj2 = $obj1; // But, I don't want to pass value. I want properties only with no value or null
Advertisement
Answer
Though I can’t imagine situation where you need this, still I think of 2 workarounds to get the copy of an object with nulled props:
// First one: clone object and unset properties via `foreach` $obj1 = (object)[ "prop1" => "String", "prop2" => "INT" ]; $obj2 = clone $obj1; foreach ($obj2 as $propName => $propValue) { $obj2->$propName = null; } var_dump($obj2); // Second: create new array with keys from original array // and null-values and then convert this array to object $obj1 = [ "prop1" => "String", "prop2" => "INT" ]; $newArray = array_fill_keys(array_keys($obj1), null); $obj2 = (object)$newArray; var_dump($obj2);