Files
php-src/ext/reflection/tests/ReflectionProperty_lazy_initialization_errors.phpt
Daniel Scherzer acf7ba883f Reflection: improve error messages for lazy initialization errors
Improve error messages from `reflection_property_check_lazy_compatible()`, as
triggered by both `ReflectionProperty::setRawValueWithoutLazyInitialization()`
and `ReflectionProperty::skipLazyInitialization()`. Say "cannot" instead of
"can not", and include parentheses after the method name.
2026-07-27 10:36:50 -07:00

52 lines
1.4 KiB
PHP

--TEST--
Test ReflectionProperty::setRawValueWithoutLazyInitialization() and skipLazyInitialization() errors
--FILE--
<?php
#[AllowDynamicProperties]
class Demo {
public static $myStatic;
public bool $myVirtual {
get => true;
}
}
function test(object $obj, string $propertyName) {
$r = new ReflectionProperty($obj, $propertyName);
try {
$r->setRawValueWithoutLazyInitialization($obj, true);
} catch (ReflectionException $e) {
echo $e->getMessage() . "\n";
}
try {
$r->skipLazyInitialization($obj);
} catch (ReflectionException $e) {
echo $e->getMessage() . "\n\n";
}
}
$obj = new Demo();
test($obj, 'myStatic');
test($obj, 'myVirtual');
$obj->myDynamic = true;
test($obj, 'myDynamic');
$obj = new ReflectionClass(Demo::class);
test($obj, 'name');
?>
--EXPECT--
Cannot use setRawValueWithoutLazyInitialization() on static property Demo::$myStatic
Cannot use skipLazyInitialization() on static property Demo::$myStatic
Cannot use setRawValueWithoutLazyInitialization() on virtual property Demo::$myVirtual
Cannot use skipLazyInitialization() on virtual property Demo::$myVirtual
Cannot use setRawValueWithoutLazyInitialization() on dynamic property Demo::$myDynamic
Cannot use skipLazyInitialization() on dynamic property Demo::$myDynamic
Cannot use setRawValueWithoutLazyInitialization() on internal class ReflectionClass
Cannot use skipLazyInitialization() on internal class ReflectionClass