Hi internals,
I've created a new RFC https://wiki.php.net/rfc/enum_allow_static_properties
Although enums are immutable objects, it is often useful to have functions or methods that operate on enum instances.
In many cases, it would make sense to declare that functionality as static methods on the enum itself.
In cases where static methods require shared state, it would be useful to allow storing those shared state in static properties.
To ensure immutability of enum instances, it's only necessary to forbid instance properties, but all properties were forbidden in the initial functionality included with the enums RFC.
This RFC proposes allowing static properties in enums, while continuing to forbid instance properties.
Thanks,
Tyson
pon., 17 maj 2021, 16:02 użytkownik tyson andre tysonandre775@hotmail.com
napisał:
Hi internals,
I've created a new RFC
https://wiki.php.net/rfc/enum_allow_static_propertiesAlthough enums are immutable objects, it is often useful to have functions
or methods that operate on enum instances.
In many cases, it would make sense to declare that functionality as static
methods on the enum itself.
In cases where static methods require shared state, it would be useful to
allow storing those shared state in static properties.
To ensure immutability of enum instances, it's only necessary to forbid
instance properties, but all properties were forbidden in the initial
functionality included with the enums RFC.This RFC proposes allowing static properties in enums, while continuing to
forbid instance properties.
Would you be able to provide more real life example?
The example in RFC could easily encapsulate current Environment reading in
for eg. EnvironmentConfiguration class with static property and method and
TBH possibly that would be my preference to solve this.
Cheers,
Michał Marcin Brzuchalski
pon., 17 maj 2021, 16:02 użytkownik tyson andre tysonandre775@hotmail.com
napisał:Hi internals,
I've created a new RFC
https://wiki.php.net/rfc/enum_allow_static_propertiesAlthough enums are immutable objects, it is often useful to have functions
or methods that operate on enum instances.
In many cases, it would make sense to declare that functionality as static
methods on the enum itself.
In cases where static methods require shared state, it would be useful to
allow storing those shared state in static properties.
To ensure immutability of enum instances, it's only necessary to forbid
instance properties, but all properties were forbidden in the initial
functionality included with the enums RFC.This RFC proposes allowing static properties in enums, while continuing to
forbid instance properties.Would you be able to provide more real life example?
The example in RFC could easily encapsulate current Environment reading in
for eg. EnvironmentConfiguration class with static property and method and
TBH possibly that would be my preference to solve this.
I would agree. Static properties are ugly to begin with. They're globals with extra syntax. I have no desire to see them on enums.
Also a clarification, since it wasn't entirely clear in Tyson's original email: Static methods on Enums are already supported. They were included in the original Enum RFC. The change proposed here is just about static properties.
--Larry Garfield
pon., 17 maj 2021, 16:31 użytkownik Larry Garfield larry@garfieldtech.com
napisał:
pon., 17 maj 2021, 16:02 użytkownik tyson andre <
tysonandre775@hotmail.com>
napisał:Hi internals,
I've created a new RFC
https://wiki.php.net/rfc/enum_allow_static_propertiesAlthough enums are immutable objects, it is often useful to have
functions
or methods that operate on enum instances.
In many cases, it would make sense to declare that functionality as
static
methods on the enum itself.
In cases where static methods require shared state, it would be useful
to
allow storing those shared state in static properties.
To ensure immutability of enum instances, it's only necessary to forbid
instance properties, but all properties were forbidden in the initial
functionality included with the enums RFC.This RFC proposes allowing static properties in enums, while
continuing to
forbid instance properties.Would you be able to provide more real life example?
The example in RFC could easily encapsulate current Environment reading
in
for eg. EnvironmentConfiguration class with static property and method
and
TBH possibly that would be my preference to solve this.I would agree. Static properties are ugly to begin with. They're globals
with extra syntax. I have no desire to see them on enums.Also a clarification, since it wasn't entirely clear in Tyson's original
email: Static methods on Enums are already supported. They were included
in the original Enum RFC. The change proposed here is just about static
properties.
Personally, I'd prefer to see enums as value objects only, adding static
properties allow to implementation of statically conditional behaviour.
IMO enums should consist only of pure functions. This is why I'd vote NO on
this proposal.
Cheers,
Michał Marcin Brzuchalski
pon., 17 maj 2021, 16:02 użytkownik tyson andre <
tysonandre775@hotmail.com>
napisał:Hi internals,
I've created a new RFC
https://wiki.php.net/rfc/enum_allow_static_propertiesAlthough enums are immutable objects, it is often useful to have
functions
or methods that operate on enum instances.
In many cases, it would make sense to declare that functionality as
static
methods on the enum itself.
In cases where static methods require shared state, it would be useful
to
allow storing those shared state in static properties.
To ensure immutability of enum instances, it's only necessary to forbid
instance properties, but all properties were forbidden in the initial
functionality included with the enums RFC.This RFC proposes allowing static properties in enums, while
continuing to
forbid instance properties.Would you be able to provide more real life example?
The example in RFC could easily encapsulate current Environment reading
in
for eg. EnvironmentConfiguration class with static property and method
and
TBH possibly that would be my preference to solve this.I would agree. Static properties are ugly to begin with. They're globals
with extra syntax. I have no desire to see them on enums.Also a clarification, since it wasn't entirely clear in Tyson's original
email: Static methods on Enums are already supported. They were included
in the original Enum RFC. The change proposed here is just about static
properties.Personally, I'd prefer to see enums as value objects only, adding static
properties allow to implementation of statically conditional behaviour.
IMO enums should consist only of pure functions. This is why I'd vote NO on
this proposal.Cheers,
Michał Marcin Brzuchalski
Hi internals,
I've updated https://wiki.php.net/rfc/enum_allow_static_properties to include the arguments made so far against/for including
static properties, as well as including more arguments/examples in favor of including static properties in traits.
Thanks,
- Tyson
Hi internals,
I've created a new RFC https://wiki.php.net/rfc/enum_allow_static_properties
Although enums are immutable objects, it is often useful to have functions or methods that operate on enum instances.
In many cases, it would make sense to declare that functionality as static methods on the enum itself (which is already permitted).
In cases where static methods require shared state, it would be useful to allow storing those shared state in static properties.
To ensure immutability of enum instances, it's only necessary to forbid instance properties, but all properties were forbidden in the initial functionality > included with the enums RFC.This RFC proposes allowing static properties in enums, while continuing to forbid instance properties.
I plan to start voting on https://wiki.php.net/rfc/enum_allow_static_properties on June 1, 2021
Regards,
Tyson