Re: [RFC] [DISCUSSION] Compact Object Property Assignment
| From: | Jakob Givoni | Date: | Wed, 18 Mar 2020 02:36:21 +0000 |
| Subject: | Re: [RFC] [DISCUSSION] Compact Object Property Assignment | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-109118@lists.php.net to get a copy of this message | ||
Thank you, Michał, for chiming in :-)
On Tue, Mar 17, 2020 at 10:52 AM Michał Brzuchalski
<michal.brzuchalski@gmail.com> wrote:
> For object initializer, I was hoping to introduce a feature which with the benefits of typed
> properties
> could reduce the boilerplate on initializing object and setting their properties in one
> expression.
Exactly my motivation with COPA as well;
- Typed properties - check,
- Reduce boilerplate - check,
- Initializing and setting properties in one expression - check.
> With object initializer, this could be reduced to:
>
> $this->dispatch(new SomeCommand { foo = 'bar', baz = false });
And with COPA it would be;
$this->dispatch((new SomeCommand)->[ foo = 'bar', baz = false ]);
Subtle differences, when compared to the currently available alternative.
> But as mentioned IMO this is a different feature than what you propose and personally I see no
> point
> in reducing only assignment statements without combining it with object construction for these
> kinds
> of small objects, DTO's, commands, queries and events.
Maybe you missed that COPA can be combined with object construction?
> but personally I don't need a constructor at all in those cases since we
> have typed properties and it looks like they could be also marked as read-only in next major
> PHP version.
Exactly, and as I couldn't help notice that you voted for the Write
Once Properties RFC, which clearly states that
object construction is a fuzzy term (meaning don't take it too
seriously) and lazy initialization is a feature...
I hope you will either reconsider your support for COPA or let me know
what I'm missing so I can
consider other directions.