“Array-application will also be pushed to future-scope”
Dang, this is what I was looking forward to the most. Helping set some precedent on this issue, and this is a solid start. I’ve been thinking about what it would look like for strictly typed arrays in PHP for a while now. I think a custom implantation like SqlObjectStorage or SplFixedArray could help performance since we now have a fixed list and no need for a hash table, and it may solve some complexity in implementation. This is slightly off-topic, but if anyone is interested in working on a typed arrays initiative, please contact me directly. That said, I agree with Robert Landers, who wrote the following: There's no need to use `?` to check for existence on a key, so this: $arr is ['a' => string, ?'b' => string, ...]; should be this: $arr is ['a' => string, 'b' => ?string, …]; ______ Chuck Adams cleared that up with: The first means b is an optional key, but if it’s there, can only be a string. The second says b is a required key, but it may be a string or null. If there were a binding involved, that determines the type of the binding in incompatible ways. ______ I think there is a need to ensure a key does not exist even if we’re not happy about this syntax, but if not having `$arr is ['a' => string, 'b' => ?string, …]` would still make me very happy. Best, Richard Miles > On Jun 24, 2024, at 5:31 PM, Larry Garfield <[email protected]> wrote: > > On Thu, Jun 20, 2024, at 5:38 PM, Larry Garfield wrote: > >> To that end, we're looking for *very high level* feedback on this RFC: >> >> https://wiki.php.net/rfc/pattern-matching > > Hi folks. Thank you to those who have offered feedback so far. Based on the > discussion, here's what we're thinking of doing (still subject to change, of > course): > > * We're going to move `as` to future-scope. There's enough weirdness around > it that is independent of pattern matching itself that it will likely require > its own discussion and RFC, and may or may not involve full pattern support. > > * Similarly, we're going to hold off on the weak-mode flag. It sounds like > the language needs to do more to fix the definition of "weak mode" before > it's really viable. :-( On the plus side, if the type system itself ever > adds support for a "coercion permitted" flag, patterns should inherit that > naturally, I think. > > * Array-application will also be pushed to future-scope. Again, there's > enough type-system tie in here that is tangential to patterns that we'll pick > that fight later. > > * Ilija and I have discussed regex patterns a bit further, and it sounds like > they’re going to be rather complicated to implement. Even assuming we agree > on the syntax for it, it would be a substantial amount of code to support. > (It’s not like types or literals or range where we can just drop something > pre-existing into a new function.) So we’re going to hold off on this one > for now, though it does seem like a high-priority follow-up for the future. > (Which doesn’t have to be us!) > > So let's not discuss the above items further at this point. > > * I'm going to do some additional research into other languages to see how > they handle binding vs using variables from scope, and what syntax markers > they use and where. Once we have a better sense of what is out there and is > known to work, we can make a more informed plan for what we should do in PHP. > (Whether using a variable from scope in the pattern is part of the initial > RFC is still an open question, but we do need to design it alongside the > capture part to ensure they don't conflict.) Stay tuned on this front. > > * We've removed the dedicated wildcard pattern, as it's equivalent to > `mixed`. If there's interest, we're open to having a secondary vote to bring > it back as a short-hand pattern. It's trivial to implement and we don't have > strong feelings either way. > > * There's not been much discussion of range patterns. Anyone want to weigh > in on those? > > * The placement of `is` on `match()` is still an open question. > > * No one has really weighed in on nested patterns for captured variables. > Any thoughts there? > > * I’ve seen a suggestion for capturing the “rest” of an array when using … > That’s an interesting idea, and we’ll explore it, though it looks like it may > have some interesting implications that push it to future scope. It feels > like a nice-to-have. > > Thanks all. > > --Larry Garfield
