Re: [RFC] Named parameters
| From: | Gints Murans | Date: | Sun, 29 Mar 2015 17:32:35 +0000 |
| Subject: | Re: [RFC] Named parameters | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-85530@lists.php.net to get a copy of this message | ||
> On 29 Mar 2015, at 17:56, Dan Ackroyd <danack@basereality.com> wrote:
>
> On 29 March 2015 at 12:28, Gints Murans <gm@gm.lv> wrote:
>
>> What happened to this RFC? This is a really great idea for php.
>
> The 'Skip Params' RFC (https://wiki.php.net/rfc/skipparams) went to
> vote and was declined.
"Named params" sounds a lot better idea instead of "Skip Params". I would also
vote "no" for the later one.
> The 'named params' RFC (https://wiki.php.net/rfc/named_params) author
> has been working on stuff they feel is more important.
Sad. :( I don't know C that well to be able to help out.
>> Reading over some old code, this way it would be a lot easier to understand what that
>> second parameter boolean = true is:
>
> You can do this right now, if you want to:
>
> getIdByTitle('sample', $insert = true);
This is fundamentally wrong, this way a local variable is created and is really not a solution for
named parameters,
and parameter skipping, just a workaround to fool my self. :)
>> About syntax: $insert => true seems kind of confusing:
>> $insert = true;
>> getIdByTitle('sample', $insert => $insert)
>
> You shouldn't need it for the case where you're actually already using
> a parameter e.g.
getIdByTitle('sample', $insert);
> already indicates
> what the parameter is. The only place where you could argue this
> syntax is needed is when you're passing in just a bare 'true' which
> has no syntactic meaning associated with it.
That was only one example, how about: getIdByTitle('sample', $insert =>
empty($somethingElse));,
its still confusing and for newcomers would be hard to understand, because $insert isn't a
variable, but the function's parameter.
Unless we look at it like we are setting function's parameters as variables, but then it
shouldn't have array element assignment operator (=>).
Although getIdByTitle('sample', $insert = true); would most probably conflict
with variable assignment functionality, i.e. create local variables,
which shouldn't happen in case of named parameters.
Anyway my preference would be getIdByTitle('sample', insert: true, type:
'x', description: 'Something');
>
> That syntax works for all versions of PHP, so I guess a new syntax
> that achieves the same thing is unlikely to be that popular an idea.
Well thanks for pointing it out, but this is really a good feature and I hope i will be accepted
sooner than later.
>
> cheers
> Dan