<?php
class Base
{
public static $prop = 'A';
}
class Child extends Base
{
}
// both values are A
$expected = 'A';
echo "Should be $expected and is " . Base::$prop . "\n";
echo "Should be $expected and is " . Child::$prop . "\n";
// both values are B
$expected = 'B';
Base::$prop = $expected;
echo "Should be $expected and is " . Base::$prop . "\n";
echo "Should be $expected and is " . Child::$prop . "\n";
// VALUES DIFFER
$expected = 'C';
$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";
// VALUES STILL DIFFER
$expected = 'D';
Base::$prop = $expected;
echo "Should be $expected and is " . Base::$prop . "\n";
echo "Should be $expected and is " . Child::$prop . "\n";
Should be A and is A
Should be A and is A
Should be B and is B
Should be B and is B
Deprecated: Calling ReflectionProperty::setValue() with a single argument is deprecated in /in/erB4r on line 30
Should be C and is C
Should be C and is C
Should be D and is D
Should be D and is D
Should be A and is A
Should be A and is A
Should be B and is B
Should be B and is B
Should be C and is C
Should be C and is C
Should be D and is D
Should be D and is D
Output for 7.0.0
Should be A and is A
Should be A and is A
Should be B and is B
Should be B and is B
Should be C and is C
Should be C and is B
Should be D and is D
Should be D and is B