I have a simple question about the callability of language constructs and
whether or not that's something that might change in the future. Consider:

var_dump(is_callable('echo')); // bool(false)
var_dump(call_user_func('echo', 'foo')); // E_WARNING
echo('foo'); // foo

var_dump(is_callable('isset')); // bool(false)
var_dump(isset(1)); // E_ERROR

Obviously this behavior arises because tokens like `echo` and `isset` are
language constructs and not functions. I can see some potential benefits
for working around this. For example, say I want to filter only the NULL
elements from an array but keep the other "falsy" values. Recognizing
`isset` as callable would allow me to do this:

var_dump(array_filter([0, FALSE, NULL], 'isset')); // [0, FALSE]

Of course, this limitation is trivial to work around with a userland
callback to check for the explicit NULL equivalency, but it would be nice
to avoid the hassle. So my question is ...

How deeply ingrained into the engine is this behavior? Is there any chance
of language constructs ever passing the tests for callability or is that
just a pipe dream that's not worth the implementation effort?

Reply via email to