On Apr 10 21:22:58, D. Dante Lorenso wrote: > The problem with implementing "ifsetor", "filled", or "??" in userland > is that the "not set" or "undefined" warning is fired before the > variable is passed to the underlying function/method. > > Is it possible to add a modifier that turns off warnings for undefined > variables whenever that specific method is called? Something like:
Short answer is no. See below. > > class Utility { > public silent function filled() { > $args = func_get_args(); > foreach ($args as $arg) { > if (!empty($arg)) { return $arg; } > } > return false; > } > } > > $x = Utility::filled($my_undef, $x['undef'], $nosuch, 'default'); > > The modifier "silent" will turn all undefined or "not isset()" variables > into NULL values when being passed to the method and no warnings will be > issued. This is not really possible without some major changes. You've to understand that arguments are evaluated before the function/method call. The notices are thus emited before even considering the function/method call. This is exactly why isset and empty are not functions, but language constructs, so that they can work with variables in a special way. > > Then, we can build our own damn functions as we see fit without the fuss. > > -- Dante > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php