- var_dump: documentation ( source)
<?php
$arr = array(
'blah1' => 1,
'blah2' => 2,
'blah3' => 3
);
class Blah
{
public static $blah1 = 4;
protected static $blah2 = 5;
private static $blah3 = 6;
}
$rc = new ReflectionClass('Blah');
// brand new ReflectionClass
var_dump($rc);
$static = $rc->getProperties(ReflectionProperty::IS_STATIC);
$obj = $rc->newInstanceWithoutConstructor();
foreach($static as $prop){
if(!empty($arr[$prop->getName()])){
$prop->setAccessible(true);
$prop->setValue($obj, $arr[$prop->getName()]);
//$rc->setStaticPropertyValue($prop->getName(), $arr[$prop->getName()]);
}
}
$obj2 = $rc->newInstanceWithoutConstructor();
// instantiate class after ReflectionClass has set all property values
var_dump($obj2);
var_dump($obj2::$blah1);
// class instantiated before ReflectionClass captured ReflectionClass values
// but after we have called "setValue"
var_dump($obj);
var_dump($obj::$blah1);