On Wed, Jun 21, 2023, at 5:44 PM, Удальцов Валентин wrote:
> Hi internals,
>
> Today PHP is more typed than ever, however, one feature is still missing:
> ability to check complex variable types using standard type declarations.
>
> For example, to check that $var is a nullable string one has to do
> `assert($var === null || is_string($var))`. To check that $var is false or
> a countable iterator, one has to write `assert($var === false || ($var
> instanceof Countable && $var instanceof Iterator))`.
>
> I propose to add a new "is" operator that allows to have `assert($var is
> ?string)` and `assert($var is false|(Countable&Iterator))`. So it is
> similar to instanceof, but accepts any valid PHP type declaration on the
> right side.
>
> WDYT?
>
> Regards,
> Valentin

There's already an RFC for that in the works, from Ilija and I: 
https://wiki.php.net/rfc/pattern-matching

"In the works" in this case means it's been designed and some preliminary code 
written a while ago, but nothing submittable yet.  We're hoping to get back to 
it in 8.4, as it's going to be a prerequisite for ADTs being usable.  (cf: 
https://wiki.php.net/rfc/tagged_unions, though the design there is out of date.)

So... hopefully stay tuned.

--Larry Garfield

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to