2012.08.25. 19:50, "Sebastian Krebs" <krebs....@gmail.com> ezt írta:
>
> Am 25.08.2012 18:38, schrieb Ferenc Kovacs:
>
>>
>>         would this trigger a notice if $foo is not defined?
>>         if yes, then it would be different from the current behavior of
the
>>         ternary operator.
>>
>>
>>     Couldn't believe it, thus I tested it myself
>>
>>
>> snip
>>
>>     Don't know, what you are talking about, but the notice _is_ the
>>     current behaiour and therefore: No difference.
>>
>>
>> Sorry, I messed up that email. What I wanted to say:
>> If it accepts unset variable, then I could see usecases for it, but then
>> it would behave differently than the current ternary.
>> If it doesn't accept unset variable then it would in line with what we
>> have, but I don't see any usecase for it, because I would have to set it
>> before checking that it is falsely or not, in which case I would set it
>> to the default if not set already.
>>
>>
>>
>>         if no, then I would never use this.
>>         I mean if I have to set the variable before the check, then I
>>         would put
>>         the check into the assignment.
>>
>>
>>     The main thought about it was
>>
>>     function foo ($bar = null) {
>>          $bar = $bar ?: 'default';
>>     }
>>
>>
>> If you wanted to enforce the 'default' value to be the default if no
>> argument passed, then you could use $bar = 'default' in the method
>> signature.
>> So I guess that you use that construct to handle when the argument is
>> passed, but it contains a falsely value ("0", array(), 0, etc.).
>> I agree that this can be useful in some cases.
>>
>>
>>     I _always_ use 'null' as default
>>
>>
>> For me, it isn't always null, sometimes it is boolean true/false, or an
>> empty array.
>>
>>
>>     - If you want to omit a parameter, but want to set one after that,
>>     you don't need to look whats the default: It's 'null'
>>
>>
>> my IDE takes care of that problem for me.
>
>
> Only works on the green field ;) And/or if you are alone ...
>
>
>>
>>     - Ive often enough seen something like
>>
>>     function foo ($limit = 10) { /* code */ }
>>     // Somewhere else
>>     function bar ($limit = 50) { /* code */ $foo($limit); /* code */}
>>     // Even somewhere else
>>     bar();
>>
>>
>> same here.
>
>
> Same here :p
>
>
>>
>> --
>> Ferenc Kovács
>> @Tyr43l - http://tyrael.hu
>
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>

So you are saying that your (teams) IDE doesn't tell you the method
signature which contains also the default values?
I guess that the fact that many of the php core functions have optional
arguments and non null defaults must be really a PITA for you.

Reply via email to