in prod/native/libphpbridge/code/AutoZval.h [127:140]
constexpr void set(NotZvalPointer auto &&val) {
if constexpr (std::is_same_v<decltype(val), bool>) {
ZVAL_BOOL(&value, val);
} else if constexpr (std::is_floating_point_v<std::remove_reference_t<decltype(val)>>) {
ZVAL_DOUBLE(&value, val);
} else if constexpr (!std::is_null_pointer_v<std::remove_reference_t<decltype(val)>> && std::is_convertible_v<decltype(val), std::string_view>) {
std::string_view sv{val};
ZVAL_STRINGL(&value, sv.data(), sv.length());
} else if constexpr (std::is_null_pointer_v<std::remove_reference_t<decltype(val)>>) {
ZVAL_NULL(&value);
} else {
ZVAL_LONG(&value, val);
}
}