Bug #74188 [Ver->Csd]: Null coalescing operator fails for undeclared static class properties

From: Date: Mon, 10 Apr 2017 21:21:04 +0000
Subject: Bug #74188 [Ver->Csd]: Null coalescing operator fails for undeclared static class properties
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-208462@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 -Status: Verified +Status: Closed 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 Previous Comments: ------------------------------------------------------------------------ [2017-03-28 06:08:23] pandenitz at mail dot ru We can use isset() for variables as well :) Why not to make it work with constants? Anyway, static class properties are more important. ------------------------------------------------------------------------ [2017-03-27 19:11:58] tpunt@php.net 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. ------------------------------------------------------------------------ [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

« previous php.bugs (#208462) next »