php-src/ext/spl/tests/ArrayObject_std_props_no_recursion.phpt
Nikita Popov 902d64390e Deprecate implicit dynamic properties
Writing to a proprety that hasn't been declared is deprecated,
unless the class uses the #[AllowDynamicProperties] attribute or
defines __get()/__set().

RFC: https://wiki.php.net/rfc/deprecate_dynamic_properties
2021-11-26 14:10:11 +01:00

33 lines
691 B
PHP

--TEST--
Don't recurse into USE_OTHER when checking for STD_PROP_LIST
--FILE--
<?php
$a = new ArrayObject([1, 2, 3], ArrayObject::STD_PROP_LIST);
$a->prop = 'a';
$b = new ArrayObject($a, 0);
$b->prop = 'b';
var_dump((array) $b);
$c = new ArrayObject($a);
$c->prop = 'c';
var_dump((array) $c);
?>
--EXPECTF--
Deprecated: Creation of dynamic property ArrayObject::$prop is deprecated in %s on line %d
Deprecated: Creation of dynamic property ArrayObject::$prop is deprecated in %s on line %d
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
Deprecated: Creation of dynamic property ArrayObject::$prop is deprecated in %s on line %d
array(1) {
["prop"]=>
string(1) "c"
}