Skip to main content

call_user_func_named

Macro call_user_func_named 

Source
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 an Arg or a Zval.
  • $name: $value - Named parameters as name: value pairs.
  • [$($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.