mirror of
https://github.com/php/php-src.git
synced 2024-10-06 09:16:11 +00:00
9265545992
By adding "zend_class_entry *ce" to struct zend_property_info; # Besides closing the bug this patch allows to optimize a bunch of # property handling optimizations. I need to find out what all can be # optimized. All other tests relevant to class handling still PASS.
70 lines
1016 B
PHP
Executable File
70 lines
1016 B
PHP
Executable File
--TEST--
|
|
Bug #3721 (Access to protected property of common base class)
|
|
--FILE--
|
|
<?php
|
|
|
|
class A
|
|
{
|
|
protected $value;
|
|
|
|
public function __construct($val)
|
|
{
|
|
$this->value = $val;
|
|
}
|
|
|
|
protected function getValue()
|
|
{
|
|
return $this->value;
|
|
}
|
|
}
|
|
|
|
class B extends A
|
|
{
|
|
public function copyValue($obj)
|
|
{
|
|
$this->value = $obj->getValue();
|
|
$this->value = $obj->value; // value defined in common base class
|
|
}
|
|
}
|
|
class C extends A {}
|
|
|
|
$B = new B("B");
|
|
var_dump($B);
|
|
$C = new C("C");
|
|
var_dump($C);
|
|
|
|
$B->copyValue($C);
|
|
|
|
var_dump($B);
|
|
|
|
?>
|
|
===DONE===
|
|
--EXPECTF--
|
|
object(B)#%d (1) {
|
|
["value":protected]=>
|
|
string(1) "B"
|
|
}
|
|
object(C)#%d (1) {
|
|
["value":protected]=>
|
|
string(1) "C"
|
|
}
|
|
object(B)#%d (1) {
|
|
["value":protected]=>
|
|
string(1) "C"
|
|
}
|
|
===DONE===
|
|
--UEXPECTF--
|
|
object(B)#%d (1) {
|
|
[u"value":protected]=>
|
|
unicode(1) "B"
|
|
}
|
|
object(C)#%d (1) {
|
|
[u"value":protected]=>
|
|
unicode(1) "C"
|
|
}
|
|
object(B)#%d (1) {
|
|
[u"value":protected]=>
|
|
unicode(1) "C"
|
|
}
|
|
===DONE===
|