diff --git a/Zend/tests/anon/017.phpt b/Zend/tests/anon/017.phpt new file mode 100644 index 0000000000000..109646ddcd879 --- /dev/null +++ b/Zend/tests/anon/017.phpt @@ -0,0 +1,43 @@ +--TEST-- +Anonymous class in trait must be declared only once +--FILE-- + 0) { + class A { use TraitWithAnonymousClass; } + var_dump(count(get_declared_classes()) - $c); + + $o = new A(); + var_dump(count(get_declared_classes()) - $c); + + $o->foo(); + var_dump(count(get_declared_classes()) - $c); +} + +eval('class B { use TraitWithAnonymousClass; }'); +var_dump(count(get_declared_classes()) - $c); + +$o = new B(); +var_dump(count(get_declared_classes()) - $c); + +$o->foo(); +var_dump(count(get_declared_classes()) - $c); + +?> +--EXPECT-- +int(1) +int(1) +int(1) +int(2) +int(2) +int(2) diff --git a/Zend/tests/static_variables_parent_trait_method.phpt b/Zend/tests/static_variables_parent_trait_method.phpt new file mode 100644 index 0000000000000..6e05d745d300e --- /dev/null +++ b/Zend/tests/static_variables_parent_trait_method.phpt @@ -0,0 +1,45 @@ +--TEST-- +Behavior of static variables in parent trait method +--FILE-- +foo(); +var_dump($a === (new A())->foo()); +var_dump($a === (new B())->foo()); +$c = new C(); +var_dump($a === $c->foo()); +var_dump($a === (new \ReflectionMethod(A::class, 'foo'))->invoke($c)); +var_dump($a === (new D())->foo()); + +?> +--EXPECT-- +string(1) "A" +string(1) "A" +bool(true) +string(1) "A" +bool(true) +string(1) "C" +bool(false) +string(1) "A" +bool(true) +string(1) "D" +bool(false)