xref: /PHP-7.1/Zend/tests/traits/property001.phpt (revision 7af945e2)
1--TEST--
2Potentially conflicting properties should result in a strict notice. Property use is discorage for traits that are supposed to enable maintainable code reuse. Accessor methods are the language supported idiom for this.
3--FILE--
4<?php
5error_reporting(E_ALL);
6
7trait THello1 {
8  private $foo;
9}
10
11trait THello2 {
12  private $foo;
13}
14
15echo "PRE-CLASS-GUARD-TraitsTest\n";
16error_reporting(E_ALL & ~E_STRICT); // ensuring that it is only for E_STRICT
17
18class TraitsTest {
19	use THello1;
20	use THello2;
21}
22
23error_reporting(E_ALL | E_STRICT);
24
25echo "PRE-CLASS-GUARD-TraitsTest2\n";
26
27class TraitsTest2 {
28	use THello1;
29	use THello2;
30}
31
32var_dump(property_exists('TraitsTest', 'foo'));
33var_dump(property_exists('TraitsTest2', 'foo'));
34?>
35--EXPECTF--
36PRE-CLASS-GUARD-TraitsTest
37PRE-CLASS-GUARD-TraitsTest2
38bool(true)
39bool(true)
40