> Having a "readonly" class where the properties are read-only by default
makes sense to me, but maybe the better way to do it is with an attribute?

We already have such an attribute provided. It is called [`#[Immutable]`](
https://blog.jetbrains.com/phpstorm/2020/10/phpstorm-2020-3-eap-4/#immutable
).
If the intention is to add some logic for attributes, then unlikely it is
going to be accepted because attributes by definition are meta-data. It
doesn't add any logic for program.


On Sat, Jul 17, 2021 at 12:09 AM Mike Schinkel <m...@newclarity.net> wrote:

> > On Jul 16, 2021, at 6:12 AM, Bruce Weirdan <weir...@gmail.com> wrote:
> >
> > On Fri, Jul 16, 2021 at 9:45 AM Eugene Sidelnyk <zsidel...@gmail.com>
> wrote:
> >
> >> Readonly properties are really useful for DDD, where everything is
> going to
> >> be immutable. It promotes best practices. However for people to use it,
> >> syntax should be concise and brief.
> >
> > If every property of the class is readonly it would probably be better
> > to declare that with a class modifier.
> >
> > E.g.
> >
> > ```php
> > readonly class Entity {
> >    public int $count;
> >    public string $data;
> > }
> > ```
>
> Having a "readonly" class where the properties are read-only by default
> makes sense to me, but maybe the better way to do it is with an attribute?
>
> #[Readonly]
> class Entity {
>    public int $count;
>    public string $data;
> }
>
> OTOH, that would be inconsistent with using `readonly` as a keyword for
> properties.
>
> -Mike
> P.S. Maybe readonly properties should be implemented with an attribute
> instead of a keyword?  But then that would be opening a can of worms...
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: https://www.php.net/unsub.php
>
>

Reply via email to