Req #65296 [Com]: Support named parameters in constructors to inline initialize objects with new()
| From: | work at nowhere dot de | Date: | Sun, 29 Sep 2013 20:57:30 +0000 |
| Subject: | Req #65296 [Com]: Support named parameters in constructors to inline initialize objects with new() | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-181830@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=65296&edit=1
ID: 65296
Comment by: work at nowhere dot de
Reported by: llmll at gmx dot de
Summary: Support named parameters in constructors to inline
initialize objects with new()
Status: Wont fix
Type: Feature/Change Request
Package: Scripting Engine problem
Operating System: any
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
If anyone votes for "properties shoudl be defined in the class", why does php support
magic setters and getters?
Previous Comments:
------------------------------------------------------------------------
[2013-09-29 20:55:14] work at nowhere dot de
Hi, would really like to see this feature.
@ab, you did not understand the main request. Arrays *are* possible, but THESE are the bad style you
talk about. Initializing properties by strings is error prone, since it is a concept brake: mapping
anything-strings to defined-constants.
The OP talked about named constants in constructors. What is the problem with such a language
feature?
------------------------------------------------------------------------
[2013-08-14 11:02:05] none at none dot de
I think the main point was missed: Original request was about Named Parameters.
(http://en.wikipedia.org/wiki/Named_parameter)
This will not extend the language or its features but enhance code readability for both humans and
IDEs.
------------------------------------------------------------------------
[2013-07-22 10:32:31] ab@php.net
What i mean, each property should be contained in the class declaration before
it's actually defined in construct :)
------------------------------------------------------------------------
[2013-07-22 10:27:57] ab@php.net
I really hope we won't turn php into javascript :) Please take a look, the sugar you
talk about is possible with the following
class Props {
function __construct(array $argv) {
foreach($argv as $arg => $val) {
$this->$arg = $val;
}
}
}
$u = new Props(['hello' => 'world',
'good' => 'bye',
'obj' => new Props(['my' => 'god'])]);
Or even use func_get_args() to make $argv optional.
However this is a VERY bad style. Every object property should be defined with the
class.
------------------------------------------------------------------------
[2013-07-19 21:11:24] llmll at gmx dot de
Just forgot to mention one more readability advantage:
It would support "nested" initializations, like it is now possible with arrays full of
strings
$object = new Object({
Property: $aValue,
Property2: $aValue2,
Subobject: new Object({
...
})
});
------------------------------------------------------------------------
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=65296
--
Edit this bug report at https://bugs.php.net/bug.php?id=65296&edit=1