mirror of
https://github.com/php/php-src.git
synced 2026-03-30 04:02:19 +02:00
This removes object auto-vivification support. This also means that we can remove the corresponding special handling for typed properites: We no longer need to check that a property is convertible to stdClass if such a conversion might take place indirectly due to a nested property write. Additionally OBJ_W style operations now no longer modify the object operand, and as such we no longer need to treat op1 as a def in SSA form. The next step would be to actually compile the whole LHS of OBJ_W operations in R rather than W mode, but that causes issues with SimpleXML, whose object handlers depend on the current compilation structure. Part of https://wiki.php.net/rfc/engine_warnings.
59 lines
1.1 KiB
PHP
59 lines
1.1 KiB
PHP
--TEST--
|
|
Bug #75573 (Segmentation fault in 7.1.12 and 7.0.26)
|
|
--FILE--
|
|
<?php
|
|
|
|
class A
|
|
{
|
|
var $_stdObject;
|
|
function __construct()
|
|
{
|
|
$this->_stdObject = new stdClass;
|
|
}
|
|
function &__get($property)
|
|
{
|
|
if (isset($this->_stdObject->{$property})) {
|
|
$retval =& $this->_stdObject->{$property};
|
|
return $retval;
|
|
} else {
|
|
return NULL;
|
|
}
|
|
}
|
|
function &__set($property, $value)
|
|
{
|
|
return $this->_stdObject->{$property} = $value;
|
|
}
|
|
function __isset($property_name)
|
|
{
|
|
return isset($this->_stdObject->{$property_name});
|
|
}
|
|
}
|
|
|
|
class B extends A
|
|
{
|
|
function &__get($property)
|
|
{
|
|
if (isset($this->settings) && isset($this->settings[$property])) {
|
|
$retval =& $this->settings[$property];
|
|
return $retval;
|
|
} else {
|
|
return parent::__get($property);
|
|
}
|
|
}
|
|
}
|
|
|
|
$b = new B();
|
|
$b->settings = [ "foo" => "bar", "name" => "abc" ];
|
|
var_dump($b->name);
|
|
var_dump($b->settings);
|
|
?>
|
|
--EXPECTF--
|
|
Notice: Only variable references should be returned by reference in %s on line %d
|
|
string(3) "abc"
|
|
array(2) {
|
|
["foo"]=>
|
|
string(3) "bar"
|
|
["name"]=>
|
|
string(3) "abc"
|
|
}
|