in prod/native/extension/code/InternalFunctionInstrumentation.cpp [55:73]
uint32_t getFunctionArgumentIndex(zend_string *name, zend_function *function) {
uint32_t numArgs = function->common.num_args;
if (function->type == ZEND_USER_FUNCTION || (function->common.fn_flags & ZEND_ACC_USER_ARG_INFO)) {
for (uint32_t i = 0; i < numArgs; i++) {
if (zend_string_equals(name, function->op_array.arg_info[i].name)) {
return i;
}
}
} else {
std::string_view nameSv(ZSTR_VAL(name), ZSTR_LEN(name));
for (uint32_t i = 0; i < numArgs; i++) {
std::string_view argName(function->internal_function.arg_info[i].name);
if (nameSv == argName) {
return i;
}
}
}
throw std::runtime_error("argument not found");
}