Req #69028 [Com]: Allow variable default function parameters
| From: | martin at martinambrus dot com | Date: | Thu, 12 Feb 2015 11:32:40 +0000 |
| Subject: | Req #69028 [Com]: Allow variable default function parameters | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-190621@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=69028&edit=1
ID: 69028
Comment by: martin at martinambrus dot com
Reported by: martin at glooware dot com
Summary: Allow variable default function parameters
Status: Duplicate
Type: Feature/Change Request
Package: *General Issues
Operating System: all
PHP Version: 5.6.0
Assigned To: ajf
Block user comment: N
Private report: N
New Comment:
Thanks for the clarification and pointing me to a right direction. I too apologise for a little
over-reacting with my last comment, I was only genuinely surprised when I saw the first reply.
Also, sorry about the constant thing, I've probably not tried that for 6 years. And now that
the variable thing re-appeared in my mind, I guess I just wanted to prove a point with a wrong
example.
Best of luck, guys :)
Previous Comments:
------------------------------------------------------------------------
[2015-02-12 11:25:45] ajf@php.net
Oh yeah, I apologise for being rather hostile before... It is a valid request, I was just surprised
to see the first sample given we've supported it for a very, very long time.
------------------------------------------------------------------------
[2015-02-12 11:22:45] nikic@php.net
Sorry for the grumpy response ;) As Andrea already mentioned herself, this isn't yet
implemented in the way that was requested, so closing as duplicate of existing https://bugs.php.net/bug.php?id=60544 instead. In
there is a link to an SO thread with some more thoughts on the topic, might be of interest.
I don't think the request to support any expression is unreasonable per se - this would only
cause issues with Reflection, but doesn't have any semantic issues like allowing arbitrary
expressions for property initializers etc.
There's a number of relatively common non-constant parameter defaults, e.g. I've often
seen parameters declared as
Foo $param = null with a $param = $param ?: new
DefaultFoo line in the body (whether this is good code design is another question).
------------------------------------------------------------------------
[2015-02-12 08:39:56] martin at glooware dot com
Cool, my intention was definitely not to waste your time. I'm just not on 5.6 yet and I still
don't see how the variables part is irrelevant, as it's not implemented and still stands
as a feature request.
So now I wasted my time to request something that you just close the request for with an irritated
comment. Thought a little bit more of you guys, but looks like it's just like with PHP - when
you don't like something, you just throw an exception and send us to hell. Nice...
------------------------------------------------------------------------
[2015-02-11 18:32:40] ajf@php.net
For a more detailed answer:
>Currently it's not possible to use any constants, variables or anonymous functions in a
>function parameter as default value. This is for example not possible:
>function saveUser($name, $surname, $company = CONSTANT_COMPANY_VALUE) {}
Did you actually test that code sample and check the manual to make sure your assertion was
correctâ½
You have been able to use constants as default values since PHP 5.3, and that came out 6 years ago.
That function you provided? It already works.
Plus, since PHP 5.6, constant expressions are supported:
function foobar($x = "hello, " . [1, 2, 3][SOME_CONST] / 3 ** 7);
It's true that you can't use variables, but that can be easily done in the body of the
function.
------------------------------------------------------------------------
[2015-02-11 18:26:37] ajf@php.net
Thank you for your bug report. This issue has already been fixed
in the latest released version of PHP, which you can download at
http://www.php.net/downloads.php
Please do not waste our time by asking for features which have already been implemented.
http://wiki.php.net/rfc/const_scalar_exprs
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=69028
--
Edit this bug report at https://bugs.php.net/bug.php?id=69028&edit=1