2021-05-04 12:33 GMT+02:00, Nikita Popov <nikita.ppv@gmail.com>:
> Hi internals,>> I'd like to present an RFC for property accessors:> https://wiki.php.net/rfc/property_accessors>> Property accessors are like __get() and __set(), but for a single property.> They also support read-only properties and properties with asymmetric> visibility (public read, private write) as a side-effect.>> The proposal is modeled after C#-style accessors (also used by Swift), and> syntactically similar to the previous> https://wiki.php.net/rfc/propertygetsetsyntax-v1.2
> proposal.>> While I put a lot of effort into both the proposal and the implementation,> I've grown increasingly uncertain that this is the right direction for us> to take. The proposal turned out to be significantly more complex than I> originally anticipated (despite reducing the scope to only "get" and "set"> accessors), and I'm sure there are some interactions I still haven't> accounted for. I'm not convinced the value justifies the complexity.>> So, while I'm putting this up for discussion, it may be that I will not> pursue landing it. I think a lot of the practical value of this accessors> proposal would be captured by support for read-only (and/or private-write)> properties. This has been discussed (and declined) in the past, but> probably should be revisited.>> Regards,> Nikita>
Hi,
In general I'm no fan of trivial getters and setters at all in OOP. I
think a better solution is provided by:
* readonly properties (or write-once, in the constructor)
* namespace- or package-internal accessing; "internal" as an
alternative to public/private
Especially when getters and setters do not upheld any particular
invariants or check validation.
Note that namespace-internal access cannot be provided by getters and
setters (though technically it's a big and hard change to PHP, AFAIK).
Olle