Edit report at https://bugs.php.net/bug.php?id=60738&edit=1
ID: 60738
Comment by: kevin dot swinton at gmail dot com
Reported by: four dot zerooneunauthorized at gmail dot com
Summary: Allow 'set_error_handler' to handle NULL
Status: Open
Type: Feature/Change Request
Package: Unknown/Other Function
Operating System: irrelivant
PHP Version: 5.3.9
Block user comment: N
Private report: N
New Comment:
In the first instance, nothing in here relates to a bug, rather both are
feature requests.
The first request is for set_error_handler() to function in an identical way to
set_exception_handler() when called with a single NULL parameter. In the
interests of a more consistent API this would seem sensible.
The second request is for set_exception_handler() (and by extension
set_error_handler()) to behave in a different way when called with a single
NULL parameter.
Given there is no compelling argument, and that such a change could technically
break BC, and that the request in itself doesn't appear to achieve anything
useful, the suggestion would be that the first request could be implemented
whilst the second request has no case.
As a result, I have attached a patch to implement only the first request.
Previous Comments:
------------------------------------------------------------------------
[2012-01-13 02:22:55] four dot zerooneunauthorized at gmail dot com
Description:
------------
Can the 'set_error_handler' function be made to accept NULL as the parameter in
such a way as to reset this feature to the default state of -no- handler being
set? This would duplicate the behavior of the 'set_exception_handler' function.
Note: this change should not interfere with the 'restore_error_handler'
function.
And as for the 'set_exception_handler' function - if NULL is given as a
parameter, can the return value of 'set_exception_handler' be set to the
details of the previously set exception handler function (string or array)
instead of always '(bool) true' as it now does?
Test script:
---------------
function testhandler1($errno= null, $errstr= null, $errfile= null, $errline =
null)
{
error_log('1: ' . print_r(func_get_args(), true));
die();
}
function testhandler2($errno= null, $errstr= null, $errfile= null, $errline =
null)
{
error_log('2: ' . print_r(func_get_args(), true));
die();
}
var_dump(set_error_handler('testhandler1'));
var_dump(set_error_handler('testhandler2'));
var_dump(set_error_handler(null));
Expected result:
----------------
NULL
string(12) "testhandler1"
string(12) "testhandler2"
Actual result:
--------------
On line 'var_dump(set_error_handler(null));', a 'set_error_handler() expects
the argument () to be a valid callback' error is generated and handled by
function "testhandler2"
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=60738&edit=1