>> Symfony YAML has a `!php/const X` feature, which also works when X is
>> an Enum::CASE; how about a `!php/enum_value` feature?
>
> I submitted something similar today at 
> https://github.com/symfony/symfony/pull/46771

And I see that it has been merged ;)

>> Otherwise, I also like Rowan's suggestion of implementing "internal
>> cast handlers", so that non-strict users could call e.g.
>
> I had a look at gmp for example: cast handlers don't work when calling a 
> function.
> They do work when explicit casting and when doing loose comparisons, but they 
> don't when calling functions

Well it works for `string` at least (even though `GMP` does *not*
implement `__toString`), e.g. https://3v4l.org/cRnnW
The TypeError for `int` may be related to the fact that e.g. `+$gmp`
(or `0 + $gmp`) gives back a GMP (not an int like `(int)$gmp`)?
(But indeed I don't know much about that... nor if it could be made opt-in)

> Rowan's proposals about sets could solve this in a very nice way

Reminded me of e.g.
https://stackoverflow.com/questions/6422380/does-any-programming-language-support-defining-constraints-on-primitive-data-types
(mainly integer ranges, but the concept of "domains" looks similar)

Regards,

--
Guilliam Xavier

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

Reply via email to