Re: [RFC] Named parameters

From: 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 [email protected] to get a copy of this message
> On 29 Mar 2015, at 17:56, Dan Ackroyd <[email protected]> wrote:
> 
> On 29 March 2015 at 12:28, Gints Murans <[email protected]> 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



Thread (46 messages)

« previous php.internals (#85530) next »