Ok - this might also be classed as a pain in the arse, but in the 5th parameter to the error handler...
errcontext
The fifth parameter is optional, errcontext, which is an array that points to the active symbol table at the point the error occurred. In other words, errcontext will contain an array of every variable that existed in the scope the error was triggered in.
You could check if $this is set in the context, see if there is an error handler defined for that object - use that, otherwise use what you've got.
That is an absolute shot in the dark, but let me know if it's useful or turns out complete arse.
EDIT: He shoots he scores: This works fine
function myErrorHandler ($errno, $errstr, $errfile, $errline, $vars)
{
if (isset($vars['this']))
{
echo "ERRROR TRIGGERED WITHIN CLASS - Could call class handler<br />";
if (method_exists($vars['this'], 'handle_error'))
$vars['this']->handle_error();
}
// whatever else
}