pub fn get(&self, self_: &'a mut T, retval: &mut Zval) -> PhpResult {
        match self {
            Property::Field(field) => field(self_)
                .get(retval)
                .map_err(|e| format!("Failed to get property value: {e:?}").into()),
            Property::Method { get, set: _ } => match get {
                Some(get) => get(self_, retval),
                None => Err("No getter available for this property.".into()),
            },
        }
    }
Attempts to retrieve the value of the property from the given object
`self_`.

The value of the property, if successfully retrieved, is loaded into the
given [`Zval`] `retval`. If unsuccessful, a [`PhpException`] is
returned inside the error variant of a result.

# Parameters

* `self_` - The object to retrieve the property from.
* `retval` - The [`Zval`] to load the value of the property into.

# Returns

Nothing upon success

# Errors

A [`PhpException`] inside an error variant when the property could not
be retrieved.

# Examples

```no_run
# use ext_php_rs::props::Property;
# use ext_php_rs::types::Zval;
struct Test {
pub a: i32,
}

let prop: Property<Test> = Property::field(|obj: &mut Test| &mut obj.a);

let mut test = Test { a: 500 };
let mut zv = Zval::new();
prop.get(&mut test, &mut zv).unwrap();
assert_eq!(zv.long(), Some(500));
```

[`PhpException`]: crate::exception::PhpException
src/props.rs