mirror of
https://github.com/php/php-src.git
synced 2024-11-28 12:26:37 +08:00
3dc9f0abe6
# The handling of private properties in classes is now consistent with private properties in traits. # Perviously, privates could cause strict warnings, are were not properly merged into the class when # the parent class had a private property of the same name. Now, we introduce it without notice, # since it is a new and independent property, just like in normal classes. # This problem was diagnosed while working on Bug #60536.
47 lines
729 B
PHP
47 lines
729 B
PHP
--TEST--
|
|
Properties should be initialized correctly (relevant to #60536)
|
|
--FILE--
|
|
<?php
|
|
error_reporting(E_ALL | E_STRICT);
|
|
|
|
class BaseWithPropA {
|
|
private $hello = 0;
|
|
}
|
|
|
|
trait AHelloProperty {
|
|
private $hello = 0;
|
|
}
|
|
|
|
class BaseWithTPropB {
|
|
use AHelloProperty;
|
|
}
|
|
|
|
class SubclassA extends BaseWithPropA {
|
|
use AHelloProperty;
|
|
}
|
|
|
|
class SubclassB extends BaseWithTPropB {
|
|
use AHelloProperty;
|
|
}
|
|
|
|
$a = new SubclassA;
|
|
var_dump($a);
|
|
|
|
$b = new SubclassB;
|
|
var_dump($b);
|
|
|
|
?>
|
|
--EXPECTF--
|
|
object(SubclassA)#%d (2) {
|
|
["hello":"SubclassA":private]=>
|
|
int(0)
|
|
["hello":"BaseWithPropA":private]=>
|
|
int(0)
|
|
}
|
|
object(SubclassB)#%d (2) {
|
|
["hello":"SubclassB":private]=>
|
|
int(0)
|
|
["hello":"BaseWithTPropB":private]=>
|
|
int(0)
|
|
}
|