Rasmus Lerdorf wrote:

On Thu, 8 Jul 2004, Marc Richards wrote:

Christian Schneider wrote:


Before it gets forgotten: I still think that
$x = ifsetor(mixed var, mixed var [, ...]);
with expressions in all parts is the way to go.

Example usage:
$a = ifsetor($_REQUEST['x'], $db->get('x'), 'default_x');


The other syntax could work for that as well...

$a = $_REQUEST['x'] ?: $db->get('x') ?: 'default_x';


and with a little white-space it is even more readable:

$a = $_REQUEST['x'] ?: $db->get('x') ?: 'default_x';


That syntax is way too confusing.

Spotting the difference between:

  $a = $b ?: $c ?: $d;

  $a = $b ? $c : $d;

is non-trivial and the two would do completely different things.

That is true for other things as well:

$a = $b += $c += $d;

$a = $b + $c = $d;

That doesn't make them inheritly evil. Adding white-space and brackets can make it even more readable.

$a = ($b ?:  ($c ?: $d));

$a = ($b ? $c : $d);

This needs to be a function that people can easily look up in the documentation.

Does it? There are other similar constructs that don't e.g. +=, $a ? $b : $c, .=;


I think that part of the reason that these things are so terse is because if would defeat the whole point to use a function name; The aim is to be concise.

If what marcus says about only being able to take two areguments is true, then it makes an even stronger case, lest we end up with:

$a = ifsetor($b, ifsetor($c, $d));


Marc

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to