in src/plugin/plugin_pdo.rs [206:231]
fn after_hook(
_: Option<i64>, span: Box<dyn Any>, execute_data: &mut ExecuteData, return_value: &mut ZVal,
) -> crate::Result<()> {
let mut span = span.downcast::<Span>().unwrap();
if log_exception(&mut *span).is_some() {
return Ok(());
}
if let Some(b) = return_value.as_bool() {
if !b {
return after_hook_when_false(get_this_mut(execute_data)?, &mut span);
}
} else if let Some(obj) = return_value.as_mut_z_obj() {
let cls = obj.get_class();
let pdo_cls = ClassEntry::from_globals("PDOStatement").unwrap();
if cls.is_instance_of(pdo_cls) {
return after_hook_when_pdo_statement(get_this_mut(execute_data)?, obj);
} else {
let cls = cls.get_name().to_str()?;
debug!(cls, "not a subclass of PDOStatement");
}
}
Ok(())
}