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. 

$_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

Reply via email to