On Fri, Nov 10, 2023 at 1:33 PM Craig Francis <cr...@craigfrancis.co.uk> wrote:
>
> On 10 Nov 2023, at 12:16, Andreas Leathley <a.leath...@gmx.net> wrote:
> > Also note that in your example $q could be an array (leading to a fatal 
> > error in the code)from the request data, which is why checking types 
> > thoroughly (not just coercing them with strval) can be helpful in avoiding 
> > unexpected situations and deciding how to handle such situations, instead 
> > of yolo-ing it.
>
> Yep, and I completely agree, but I'm not focusing on my code, I'm looking at 
> the code the vast majority of developers write... and I do not want PHP 9 to 
> be so difficult to use that people stay on PHP 8 forever.
>
> Craig
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: https://www.php.net/unsub.php
>

Personally, I find the whole strict types + nullable thing really bad.

(string) null is "", which is hopefully pretty well known. But with
strict types, you may not even know you have a null value because
casting is used all over the code base. I constantly have to point out
this in code reviews and suggest this:

// val is an int|string|null
func((string) ($val ?? throw new LogicException("val should not be null")));

which just feels dirty. At least in non-strict type mode, we would get
"null catching" for free (at the expense of deterministic coercion),
and is one reason we're actually considering to switch back to
non-strict types; a very simple coercion system for everything but
null.

So, really, I think it might be a good idea to rethink the whole type
system at some point. There isn't really any ideal solution atm for
handling nulls + strict types.


Robert Landers
Software Engineer
Utrecht NL

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

Reply via email to