error_log() is a good point. In the future, set_error_handler() might be changed to be called multiple times with different custom error handlers, similar to how register_shutdown_function() and spl_autoload_register() act on multiple calls. Having a chain of error handlers appending data to $errstr makes it difficult to use error_log(), because this is a one-time operation. Also, error_log() has the ability to override the "error_log" property from php.ini, which might not be the desired behaviour. So I would prefer $errstr to be passed by reference.
For completeness, error_log() currently has no parameters for $errno, $line and $file, so an example would look like this: function myErrorHandler($errno, $errstr, $errfile, $errline) { switch($errno){ case E_WARNING: $errnoStr='Warning'; break; case E_NOTICE: $errnoStr='Notice'; break; case E_STRICT: $errnoStr='Strict'; break; case E_RECOVERABLE_ERROR: $errnoStr='Recoverable Error'; break; case E_DEPRECATED: $errnoStr='Deprecated'; break; case E_USER_ERROR: $errnoStr='User Error'; break; case E_USER_WARNING: $errnoStr='User Warning'; break; case E_USER_NOTICE: $errnoStr='User Notice'; break; case E_USER_DEPRECATED: $errnoStr='User Deprecated'; break; } if (!empty($_SESSION['username'])) { $errstr .= ', username: '.$_SESSION['username']; } error_log('PHP '.$errnoStr.': '.$errstr.' in '.$errfile.' on line '.$errline); return true; } Regards Thomas Dan Ackroyd wrote on 30.01.2015 10:38: > On 21 January 2015 at 04:39, Thomas Bley <ma...@thomasbley.de> wrote: >> In userland it is sometimes necessary to extend PHP's notices/warnings with >> additional information (e.g. username from session, stack trace, etc.) > > Why can't you just use in the error handler function to write the > exact message you want? > > http://php.net/manual/en/function.error-log.php > > cheers > Dan > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php