On Apr 11 14:14:40, Matt Wilson wrote: > Something I've been doing for a long time is similar, but in my opinion a > much better practice. > > function coalesce(&$val, $ifnull = false) > { > return empty($val) ? $ifnull : $val; > } > > Add whatever restrictive logic you wish here, if empty() isn't good enough > for your purposes.
The "problem" with such approach is that it will always end up defining what $val is a reference of. e.g. $plop = coalesce($_GET['foo'], 'default']); will end up leaving $_GET['foo'] assigned to null. That might be fine with your usage, but having an operator for it would solve that "problem". Best, > > $_GET['mightnotexist'] = coalesce($_GET['mightnotexist'], 'default'); > > Personally, I think if you're writing your code where a variable's existence > is ambiguous, you *should* be seeing notices. > > On Apr 11, 2011, at 2:08 PM, Todd Ruth wrote: > > > I'm not arguing whether the following code fragment is good > > or bad (it's certainly less than ideal), but given the recent > > threads, I thought I'd show how I feel I've been encourage by > > php to code: > > > > <?php > > $x = array(); > > $y = 'something'; > > $temp =& $x[$y]; > > $temp++; > > unset($temp); > > ?> > > > > I'm not sure where (if anywhere) that technique is documented > > or even if it should be documented, but if you want to avoid > > "Undefined index" notices, that's one of the more terse > > approaches. The relative brevity is more obvious when the > > variable names are long and $temp is re-linked several times > > before unsetting. It's probably less clear than alternatives > > unless you see it often. > > > > Here is an application to the defaults for configurations thread: > > > > <?php > > $config = array(); > > $param = 'param1'; > > $temp =& $config[$param]; > > $temp = $temp ?: 'default'; > > unset($temp); > > var_dump($config); > > ?> > > > > It isn't beautiful, but it avoids writing "$config[$param]" > > more than once and it avoids the notices. > > > > - Todd > > > > > > -- > > 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 > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php