1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/Zend/tests/lazy_objects/gh20875_proxy_get_no_init.phpt
Ilia Alshanetsky 9ec303edde Fix GH-20875: Propagate IN_GET guard in get_property_ptr_ptr for lazy proxies
zend_std_get_property_ptr_ptr() was the only property handler that did
not propagate the IN_GET guard to the underlying object when forwarding
from a lazy proxy after initialization. This caused __get to be called
on the underlying object when it shouldn't be, leading to assertion
failures.

The same guard-copying pattern already existed in read_property,
write_property, unset_property, and has_property since commit
26f5009e91 (GH-18039).

Also fixes GH-20873 and GH-20854.

Closes GH-20875
2026-03-20 15:44:21 +01:00

24 lines
385 B
PHP

--TEST--
GH-20875 (Lazy proxy should not initialize when __get handles dynamic property access)
--FILE--
<?php
class Foo {
public $_;
public function &__get($name) {
echo "__get\n";
return $name;
}
}
$proxy = (new ReflectionClass(Foo::class))->newLazyProxy(function () {
echo "init\n";
return new Foo();
});
$x = &$proxy->x;
?>
--EXPECT--
__get