1--TEST-- 2Inherited static properties can be separated from their reference set. 3--FILE-- 4<?php 5class C { public static $p = 'original'; } 6class D extends C { } 7class E extends D { } 8 9echo "\nInherited static properties refer to the same value across classes:\n"; 10var_dump(C::$p, D::$p, E::$p); 11 12echo "\nChanging one changes all the others:\n"; 13D::$p = 'changed.all'; 14var_dump(C::$p, D::$p, E::$p); 15 16echo "\nBut because this is implemented using PHP references, the reference set can easily be split:\n"; 17$ref = 'changed.one'; 18D::$p =& $ref; 19var_dump(C::$p, D::$p, E::$p); 20?> 21==Done== 22--EXPECTF-- 23Inherited static properties refer to the same value across classes: 24string(8) "original" 25string(8) "original" 26string(8) "original" 27 28Changing one changes all the others: 29string(11) "changed.all" 30string(11) "changed.all" 31string(11) "changed.all" 32 33But because this is implemented using PHP references, the reference set can easily be split: 34string(11) "changed.all" 35string(11) "changed.one" 36string(11) "changed.all" 37==Done== 38