Re: Allowing NULL for some internal functions
| From: | Larry Garfield | Date: | Wed, 02 Mar 2022 14:17:04 +0000 |
| Subject: | Re: Allowing NULL for some internal functions | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 13 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-117206@lists.php.net to get a copy of this message | ||
On Wed, Mar 2, 2022, at 8:00 AM, Craig Francis wrote:
> On Wed, 2 Mar 2022 at 12:26, Dik Takken <dik.takken@gmail.com> wrote:
>
>> So, to get this crystal clear, this is my understanding of what you are
>> proposing for passing null to a non-nullable function parameter
>> (hopefully my ASCII art will come through ok):
>>
>>
>> which | strict_types | PHP 8.0 | PHP 8.1 | PHP 9
>> ----------|---------------|------------|------------|----------
>> user | 1 | TypeError | TypeError | TypeError
>> internal | 1 | TypeError | TypeError | TypeError
>> user | 0 | TypeError | TypeError | coerced
>> internal | 0 | coerced | Deprecated | coerced
>>
>> Is this correct?
>>
>
>
> Yes, that's correct... although I'd be doing this for 8.2, to avoid
> TypeError exceptions being introduced for non
strict_types
> scripts in 9.0.
>
> This is based on the feedback from the quiz and here; so type coercion from
> NULL would continue to work, like coercion from the other variable types
> (string/int/float/bool).
>
> Craig
Null is not an empty string. Null is not a string. Null is not 0. Null is not an integer.
The clear trend of the language is toward more type strictness. Going back on that is a bad idea.
Furthermore, increasing the delta between weak and strict mode only serves to bifurcate the language
and add one more thing that people have to think about when they move from one file to another; the
language behaves differently depending on what file you're in. That's already a cognitive
overhead. Don't add to it.
I am firmly -1 on weakening the type system, even if "weak mode".
--Larry Garfield