Bug #74188 [Ver]: Null coalescing operator fails for undeclared static class properties & constant

[email protected]
Newsgroups php.bugs
Message-ID <[email protected]>
Edit report at https://bugs.php.net/bug.php?id=74188&edit=1

 ID:                 74188
 Updated by:         [email protected]
 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.