macro_rules! call_user_func_named {
($fn: expr, $($name: ident : $value: expr),+ $(,)?) => { ... };
($fn: expr, [$($pos: expr),* $(,)?], $($name: ident : $value: expr),+ $(,)?) => { ... };
}Expand description
Attempts to call a given PHP callable with named arguments.
This macro supports PHP 8.0+ named arguments, allowing you to pass arguments by name rather than position.
§Syntax
ⓘ
// Named arguments only
call_user_func_named!(callable, name1: value1, name2: value2)
// Positional arguments followed by named arguments
call_user_func_named!(callable, [pos1, pos2], name1: value1, name2: value2)§Parameters
$fn- The ‘function’ to call. Can be anArgor aZval.$name: $value- Named parameters asname: valuepairs.[$($pos),*]- Optional positional parameters in square brackets.
§Examples
ⓘ
use ext_php_rs::{call_user_func_named, types::ZendCallable};
let str_replace = ZendCallable::try_from_name("str_replace").unwrap();
// Using named arguments only
let result = call_user_func_named!(str_replace,
search: "world",
replace: "PHP",
subject: "Hello world"
).unwrap();
// Mixing positional and named arguments
let result = call_user_func_named!(str_replace, ["world", "PHP"],
subject: "Hello world"
).unwrap();Note: Parameter names must be valid Rust identifiers.
For other names, use try_call_named directly.