A shorter way for getting variables I have the following piece of code in my project, and that a few times:

$this-&gt;uniqueSessionKey = $settings-&gt;get('uniqueSessionKey') ? $settings-&gt;get('uniqueSessionKey') : $_SERVER['HTTP_USER_AGENT'] . time();


I was wondering if there's a better way of writing this, especially the part where it checks if $settings-&gt;get(...) is not false and then uses the previously checked value. As it uses a database connection it's probably not very efficient checking for the same thing twice.

Is there a better way of writing this? I'm already using the shortest if-else that I'm aware of.
If it's not possible, I will put the $settings-&gt;get(...) in a variable anyway, and then check if it's false. I've tried using || but that returned false (?) so I probably did that wrong.

Note that I don't want to check it for multiple values, so I don't need to use for etc.
Since PHP 5.3 you can use the shortcut $a = $b? : $c:

$this-&gt;uniqueSessionKey = $settings-&gt;get('uniqueSessionKey') ?  : $_SERVER['HTTP_USER_AGENT'] . time();


--

Just a note: you can not use this if you want check if the var $a is set. In this case you must use the original form: $a = isset($b)? $b : $c;

Otherwise, you can write a custom function in this way:

function getIfSet(&amp;$a, $default = null) {
      return isset($a)? $a : $default;
} 

$a = getIfSet($b,$c);


Passing var by reference (&amp;$a) avoid the PHP notice if $a is not set.