Bug #80283 [Opn->Nab]: Null constant in method signature did not allow nullable anymore
| From: | nikic@php.net | Date: | Mon, 26 Oct 2020 08:43:37 +0000 |
| Subject: | Bug #80283 [Opn->Nab]: Null constant in method signature did not allow nullable anymore | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-229921@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=80283&edit=1
ID: 80283
Updated by: nikic@php.net
Reported by: php-bugs at marcelthole dot de
Summary: Null constant in method signature did not allow
nullable anymore
-Status: Open
+Status: Not a bug
Type: Bug
Package: *General Issues
PHP Version: 8.0.0RC2
Block user comment: N
Private report: N
New Comment:
This is an intentional change, documented here: https://github.com/php/php-src/blob/0535872b7cd50be8b40ad06154b287749315eb27/UPGRADING#L97-L106
Previous Comments:
------------------------------------------------------------------------
[2020-10-26 08:40:40] php-bugs at marcelthole dot de
Description:
------------
In PHP < 8.0 it was possible to make an argument nullable without the question mark if the
default value is null. This works fine if the variable is directly null, but not when the default
value is an CONST with a null value
Test script:
---------------
<?php
declare(strict_types=1);
const ALLOW_ANY = null;
var_dump(ALLOW_ANY);
function foo(array $baz = ALLOW_ANY)
{
return true;
}
var_dump(foo(NULL));
Expected result:
----------------
NULL
bool(true)
Actual result:
--------------
NULL
Fatal error: Uncaught TypeError: foo(): Argument #1 ($baz) must be of type array, null given, called
in /in/RLUo7 on line 14 and defined in /in/RLUo7:9
Stack trace:
#0 /in/RLUo7(14): foo(NULL)
#1 {main}
thrown in /in/RLUo7 on line 9
Process exited with code 255.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=80283&edit=1