<?php
class Base
{
public static $prop;
}
class Child extends Base
{
}
// both values are A
$expected = 'A';
Base::$prop = $expected;
echo "Should be $expected and is " . Base::$prop . "\n";
echo "Should be $expected and is " . Child::$prop . "\n";
echo "\n";
// VALUES DIFFER
$expected = 'B';
$property = new ReflectionProperty('Base', 'prop');
$property->setValue($expected);
echo "Should be $expected and is " . Base::$prop . "\n";
echo "Should be $expected and is " . Child::$prop . "\n";
echo "\n";
// VALUES STILL DIFFER
$expected = 'C';
Base::$prop = $expected;
echo "Should be $expected and is " . Base::$prop . "\n";
echo "Should be $expected and is " . Child::$prop . "\n";
echo "\n";
Should be A and is A
Should be A and is A
Deprecated: Calling ReflectionProperty::setValue() with a single argument is deprecated in /in/T43Sh on line 24
Should be B and is B
Should be B and is B
Should be C and is C
Should be C and is C