fn php_zval_to_visit_result(val: &ext_php_rs::types::Zval) -> {{ result_type_path }} {
if let Some(s) = val.string() {
return match s.as_str() {
{%- for variant in unit_result_variants %}
{%- if variant.cfg %}
#[cfg({{ variant.cfg }})]
{%- endif %}
"{{ variant.wire_name }}" => {{ result_type_path }}::{{ variant.name }},
{%- endfor %}
_ => {{ unknown_string_result_expr }},
};
}
{%- if payload_result_variants %}
let Some(arr) = val.array() else {
return {{ result_type_path }}::{{ default_variant }};
};
{%- for variant in payload_result_variants %}
{%- if variant.cfg %}
#[cfg({{ variant.cfg }})]
{%- endif %}
{
if let Some(custom_val) = arr.get("{{ variant.wire_name }}")
&& let Some(s) = custom_val.string()
{
return {{ result_type_path }}::{{ variant.name }}(s.to_string());
}
}
{%- endfor %}
{%- endif %}
{{ result_type_path }}::{{ default_variant }}
}