Annotation of embedaddon/php/Zend/tests/traits/property008.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Handling of private fields with traits needs to have same semantics as with normal inheritance.
! 3: --FILE--
! 4: <?php
! 5: error_reporting(E_ALL | E_STRICT);
! 6:
! 7: class BaseWithPropA {
! 8: private $hello = 0;
! 9: }
! 10:
! 11: // This is how privates are handled in normal inheritance
! 12: class SubclassClassicInheritance extends BaseWithPropA {
! 13: private $hello = 0;
! 14: }
! 15:
! 16: // And here, we need to make sure, that the traits behave the same
! 17:
! 18: trait AHelloProperty {
! 19: private $hello = 0;
! 20: }
! 21:
! 22: class BaseWithTPropB {
! 23: use AHelloProperty;
! 24: }
! 25:
! 26: class SubclassA extends BaseWithPropA {
! 27: use AHelloProperty;
! 28: }
! 29:
! 30: class SubclassB extends BaseWithTPropB {
! 31: use AHelloProperty;
! 32: }
! 33:
! 34: $classic = new SubclassClassicInheritance;
! 35: var_dump($classic);
! 36:
! 37: $a = new SubclassA;
! 38: var_dump($a);
! 39:
! 40: $b = new SubclassB;
! 41: var_dump($b);
! 42:
! 43: ?>
! 44: --EXPECTF--
! 45: object(SubclassClassicInheritance)#1 (2) {
! 46: ["hello":"SubclassClassicInheritance":private]=>
! 47: int(0)
! 48: ["hello":"BaseWithPropA":private]=>
! 49: int(0)
! 50: }
! 51: object(SubclassA)#2 (2) {
! 52: ["hello":"SubclassA":private]=>
! 53: int(0)
! 54: ["hello":"BaseWithPropA":private]=>
! 55: int(0)
! 56: }
! 57: object(SubclassB)#3 (2) {
! 58: ["hello":"SubclassB":private]=>
! 59: int(0)
! 60: ["hello":"BaseWithTPropB":private]=>
! 61: int(0)
! 62: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>