@ 2020-02-04T10:13:17Z

<?php function exception_error_handler($severity, $message, $file, $line) { if (!(error_reporting() & $severity)) { // This error code is not included in error_reporting return; } throw new ErrorException($message, 0, $severity, $file, $line); } set_error_handler("exception_error_handler"); $o=new StdClass(); $o->f=function(){ echo "i ran!"; }; try{ $o->f(); }catch(Throwable $ex){ echo 'didn\'t work: $o->f()',PHP_EOL; } try{ call_user_func([$o,'f']); }catch(Throwable $ex){ echo 'didn\'t work: call_user_func([$o,\'f\'])',PHP_EOL; } try{ get_object_vars($o)['f'](); }catch(Throwable $ex){var_dump($ex); echo 'didn\'t work: get_object_vars($o)[\'f\']()',PHP_EOL; }