Re: First-class types RFC

From: Date: Sat, 09 Nov 2024 09:35:01 +0000
Subject: Re: First-class types RFC
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-125931@lists.php.net to get a copy of this message
On Sat, Nov 9, 2024, at 09:39, Adam Kecskes wrote: > Hello internals, > > I propose adding first-class types to PHP, as this feature could greatly enhance the language, > especially given PHP's unique runtime type-checking system. Many libraries currently rely on > class strings as function parameters, which could be made significantly safer with native types > rather than strings. This addition would not only streamline existing code but also create a > foundation for future language extensions. For instance, generic classes could be implemented as > syntactic sugar, which would translate into a class property holding the type parameter(s) for each > instance. > > A minimal viable version could allow defining types as expressions, introduce a new > 'type' type, and expand is_a to accept those expressions like: > > is_a($object, \ClassOne | \ClassTwo); > > An example interface might look like: > > interface ContainerInterface > { > public function get(type $type); > } > > I’d appreciate your feedback on this idea before proceeding with an RFC or draft PR. Please > let me know your thoughts! > > Best Regards, > Adam Kecskes Hey Adam, While working on https://wiki.php.net/rfc/typed-aliases, (and an associated early discussion: https://externals.io/message/125455#125455), it would make pattern matching almost trivial to implement, as well as first-class types. That being said, my life has been a bit of a whirlwind in the last month, so I've had little time to work on these things. I'm hoping for things to settle down soon though. 🫰 I highly recommend seeking out the pattern matching RFC that is still being worked on as well: https://externals.io/message/123701#123701 Long story short, there is ongoing work towards what you are proposing here, but feel free to work on competing a competing RFC or contributing to ongoing discussions. Different ideas and approaches are almost always good, IMHO. — Rob

« previous php.internals (#125931) next »