empty()and isset()are not actually functions.
They are keywords embedded in the language and executed by the compiler, and it is this behavior that is possible - the compiler (in contrast to the execution mechanism where ordinary functions are executed) already knows whether the variable exists or not.
, PHP 5 empty(), isset(), list() .. - const .
fexpr.