Annotation of embedaddon/php/Zend/tests/traits/property008.phpt, revision 1.1.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>