php-src/ext/zend_test/tests/attribute-named-parameter.phpt
Tim Düsterhus a1ea464069
gen_stub: Intern the parameter name string for named arguments in internal attributes (#14595)
This is necessary because `zend_get_attribute_object()` will use the persistent
string with the parameter name as the index for a newly created non-persistent
HashTable, which is not legal.

As parameter names are expected to be short-ish, reasonably common terms and
need to sit around in memory anyways, we might as well make them an interned
string, circumstepping the issue without needing to duplicate the parameter
name into a non-persistent string.
2024-06-19 08:06:50 +02:00

22 lines
471 B
PHP

--TEST--
Verify that attributes for internal functions correctly support named arguments.
--EXTENSIONS--
zend_test
--FILE--
<?php
$reflection = new ReflectionFunction("zend_test_attribute_with_named_argument");
$attribute = $reflection->getAttributes()[0];
var_dump($attribute->getArguments());
var_dump($attribute->newInstance());
?>
--EXPECTF--
array(1) {
["arg"]=>
string(3) "foo"
}
object(ZendTestAttributeWithArguments)#3 (1) {
["arg"]=>
string(3) "foo"
}