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 >> m...@pooteeweet.org > > 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