pub fn eval(code: &str) -> Result<Zval, EmbedError> {
        let cstr = match CString::new(code) {
            Ok(cstr) => cstr,
            Err(err) => return Err(EmbedError::InvalidEvalString(err)),
        };

        let mut result = Zval::new();

        let exec_result = try_catch(|| unsafe {
            zend_eval_string(
                cstr.as_ptr().cast::<c_char>(),
                &mut result,
                c"run".as_ptr().cast(),
            )
        });

        match exec_result {
            Err(_) => Err(EmbedError::CatchError),
            Ok(ZEND_RESULT_CODE_SUCCESS) => Ok(result),
            Ok(_) => Err(EmbedError::ExecuteError(ExecutorGlobals::take_exception())),
        }
    }
Evaluate a php code

This function will only work correctly when used inside the `Embed::run`
function

# Returns

* `Ok(Zval)` - The result of the evaluation

# Errors

* `Err(EmbedError)` - An error occurred during the evaluation

# Example

```
use ext_php_rs::embed::Embed;

Embed::run(|| {
let foo = Embed::eval("$foo = 'foo';");
assert!(foo.is_ok());
});
```
src/embed/mod.rs