2012/4/18 Matthew Weier O'Phinney <weierophin...@php.net>:
> My one comment, which others have raised, is readability of multiple
> commas -- TBH, at first glance it has the appearance of a mistake. I
> think those suggesting a keyword such as "default" make a good point in
> this regard -- it makes it 100% clear that you want the default value
> for the argument in that position. This also presents an improvement
> over current usage, as you're not hard-coding values in your function
> calls themselves -- particularly as the defaults could change in future
> refactors.

I think we should only support optional parameters using the "default"
keyword as it would probably make things more consistent and less
error prone:

function foo( $bar = "bar", $foo = "foo", $baz = "baz" ) { ... }

foo(,,, "myBaz"); // Thinking changing the value of $baz, but there's
one too much "," and PHP won't complain because of too many arguments
used!

Additionally, we might also want to think about
call_user_func()/call_user_func_array().

If for the former it could work with:

call_user_func( "foo", , , "myBaz" );

What about the latter?

call_user_func_array( "foo", [2 => "myBaz"] ); // ? Evaluating the
element at index 0 would cause a notice, but would result in a NULL,
so I would say that NULL is to be used as first parameter.

I have no clue on how to correctly support skipped default values in
that case since there is a big difference in supporting the "default"
keyword inside the method call vs. as an element of an array.
Ideas are welcome!

Last but not least: if skipping optional parameters is implemented,
should we consider the support of default values on the leftmost side
of functions?

function foo( $bar = "bar", $baz ) { ... }

It could make sense that $bar followed by $baz is semantically better
than the opposite for technical reason, and this could be called
using:

foo( default, "baz")
or:
foo(, "baz")

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to