Le Sat, 21 Nov 2009 10:21:18 -0800, Rasmus Lerdorf a écrit :
> 
> The ternary isn't meant to solve the isset thing you are talking about.
>  It is simply a shortcut to normal ternary operations.  The most common
> case where you don't know if a variable is set is on the initial input
> via $_GET or $_POST and we definitely don't want people doing:
> 
>   $var = $_GET['foo'] ?: 42;
> 
> It would be an XSS disaster.  Hence the suggestion to use input_filter
> there, or a similar user-supplied filtering function in which case the
> ternary, as it is currently implemented, is perfectly suitable.
> 
> -Rasmus

Sure ! Developpers should filter variables contents !

Generaly there are 3 step for treat incoming variable : 
1- checking existance of the variable. 
2- set a default value if it not exists or empty. 
3- filtering the variable content.

Generaly, we combine step 1 and 2 in one.
I don't recommand using empty() because this method has some side effect 
like '0' or 'off' which are interpreted as empty values. I prefer use 
isset() method.

Every time, we need to check existance of variable. Checking if var is 
empty to fill it with a default value is optionnal, this step differs 
depending on the program behaviour.

For the third step, filter extension for example are perfect.

So, PHP provides an excellent short syntax to fill empty variable with 
the ternary operator.
But there is a lack for the most common case which is check if variable 
is set.

Perhaps I've made a mistake by suggesting a ternary operator improvement.

The real needing is :
I want a pretty and short syntax like the ternary operator for checking 
if a variable is set and set a default value if it not set.

I have one for array with union opertor.

$_POST += array(
 'foo' => '',
 'bar' => '',
 'baz' => '',
);

And having something like that would be nice :

$var ?= 'default';

// this can work too for array
$_GET['foo'] ?= 'default';

I am aware that I am repeating myself and that I seem insistant. It is 
difficult to express ideas clearly when one is not very comfortable with 
English and I apologize for that :)

-- 
Alban Leroux s...@paradoxal.org

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

Reply via email to