diff options
Diffstat (limited to 'tests/classes/static_properties_004.phpt')
-rw-r--r-- | tests/classes/static_properties_004.phpt | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/classes/static_properties_004.phpt b/tests/classes/static_properties_004.phpt new file mode 100644 index 0000000..ce1d19d --- /dev/null +++ b/tests/classes/static_properties_004.phpt @@ -0,0 +1,37 @@ +--TEST-- +Inherited static properties can be separated from their reference set. +--FILE-- +<?php +class C { public static $p = 'original'; } +class D extends C { } +class E extends D { } + +echo "\nInherited static properties refer to the same value accross classes:\n"; +var_dump(C::$p, D::$p, E::$p); + +echo "\nChanging one changes all the others:\n"; +D::$p = 'changed.all'; +var_dump(C::$p, D::$p, E::$p); + +echo "\nBut because this is implemented using PHP references, the reference set can easily be split:\n"; +$ref = 'changed.one'; +D::$p =& $ref; +var_dump(C::$p, D::$p, E::$p); +?> +==Done== +--EXPECTF-- +Inherited static properties refer to the same value accross classes: +%unicode|string%(8) "original" +%unicode|string%(8) "original" +%unicode|string%(8) "original" + +Changing one changes all the others: +%unicode|string%(11) "changed.all" +%unicode|string%(11) "changed.all" +%unicode|string%(11) "changed.all" + +But because this is implemented using PHP references, the reference set can easily be split: +%unicode|string%(11) "changed.all" +%unicode|string%(11) "changed.one" +%unicode|string%(11) "changed.all" +==Done==
\ No newline at end of file |