Alban wrote:
> Le Sat, 21 Nov 2009 09:48:10 +0100, Lukas Kahwe Smith a écrit :
>
>> On 21.11.2009, at 06:12, Alban wrote:
>>
>>> This is not a big problem but if a solution exists, this would be so
>>> cool ! Especialy when we have to check existance of twenty or more key
>>> in array. Code would be be lighter and clear. Since i use PHP, I always
>>> have in my 'common function file' a function like that :
>>>
>>> function getIssetVar($var, $default) { return ((isset($var)) ? $var :
>>> $default); }
>>>
>>> So is it possible to make a little improvement on this operator or
>>> introduce a new operator or a core function which do that ? What's your
>>> feeling about it ?
>>
>> this feature request has already been discussed and declined:
>> http://wiki.php.net/rfc/ifsetor
>>
>> please review this rfc before continuing this thread.
>>
>> regards,
>> Lukas Kahwe Smith
>> [email protected]
>
> Thanks for the link to the RFC :)
>
> Excuse me, but I'll be little hard in this post. This for insult the
> community but I want the community really think about the decision it
> made and the reason why.
>
> I also read why it have been refused here :
> http://www.php.net/~derick/meeting-notes.html#ifsetor-as-replacement-for-
> foo-isset-foo-foo-something-else
>
> Is it serious ?
>
> «
> The name for this new operator is heavily disputed and we could not agree
> on a decent name for it.
> »
>
> Tomorrow I will not send food to the association for children who are
> hungry because I can not choose between offering Thai or basmati rice.
>
> Stop sarcasm, seriously, this is not an honorable response from people
> making decisions. Take your responsibility and make a vote or impose a
> name, just do it.
>
> «
> Instead of implementing ifsetor() we remove the
> requirement for the "middle" parameter to the ?: operator.
> »
>
> That's not people wants and that's not do their need.
> So that not a correct answer of the php developper demand.
>
> «
> In combination with the new input_filter extension
> you then reach the original goal of setting a default
> value to a non-set input variable with:
>
> $blahblah = input_filter_get(GET, 'foo', FL_INT) ?: 42;
> »
>
> I don't see how do that with the actual filter extension. Even if it is
> possible, this is not a pretty short and easier solution than :
>
> $var = (isset($var)) ? $var : 'default';
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
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php