Dating null set
And if you have any E_NOTICE errors caused by other code between the set_error_handler and restore_error_handler they will not be dealt with properly.
The name ("isset") should describe the function and not have the desciption be "is set AND is not null".
Hence, it doesn't work how you'd think it would, (as documented) a var currently in the scope with a null value will return false.
Heres a quick solution, perhaps there are better ways of going about this, but heres my solution...
It's not just to check for uninitialised variables - a lot of the time those are just due to sloppy coding.
There are other ways a variable could fail to have a value (e.g., it's meant to hold the value returned from a function call but the function didn't have a value to return) where uninitialising the variable would not be an option nor even make sense (e.g., depending on what was to be done with the returned value).