Bug #74188 [Ver]: Null coalescing operator fails for undeclared static class properties & constant
| From: | tpunt@php.net | Date: | Mon, 27 Mar 2017 19:11:58 +0000 |
| Subject: | Bug #74188 [Ver]: Null coalescing operator fails for undeclared static class properties & constant | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-208097@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=74188&edit=1
ID: 74188
Updated by: tpunt@php.net
Reported by: pandenitz at mail dot ru
Summary: Null coalescing operator fails for undeclared static
class properties & constant
Status: Verified
Type: Bug
Package: Variables related
Operating System: Win 7 64
PHP Version: 7.0.16
Assigned To: tpunt
Block user comment: N
Private report: N
New Comment:
The null coalescing operator should not be used to check whether a constant has been defined or not
- that's what the defined() function is for.
Previous Comments:
------------------------------------------------------------------------
[2017-03-27 08:10:43] pandenitz at mail dot ru
Same for class constants.
------------------------------------------------------------------------
[2017-03-01 17:05:48] pandenitz at mail dot ru
I guess it's same in PHP 7.1
------------------------------------------------------------------------
[2017-03-01 07:42:17] pandenitz at mail dot ru
Description:
------------
Null coalescing operator doesn't check isset() for static properties
Test script:
---------------
abstract class Test
{
public static function get()
{
return static::$test ?? true;
}
public static function get2()
{
return isset(static::$test) ? static::$test : true;
}
}
// Access to undeclared static property
Test::get();
// Works
Test::get2();
Expected result:
----------------
No errors
Actual result:
--------------
Error
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74188&edit=1