Edit report at https://bugs.php.net/bug.php?id=50331&edit=1
ID: 50331 Comment by: php dot net at doppy dot nl Reported by: wdolek at gmail dot com Summary: undefined constant is consider to be string Status: Open Type: Feature/Change Request Package: Scripting Engine problem Operating System: GNU/Linux PHP Version: 5.2.11 Block user comment: N Private report: N New Comment: When any unknown constant is converted to a string a NOTICE is given. You have to make sure error_reporting shows these notices. When I insert this before your code: <?php error_reporting(-1); ?> I get the following result: ---------------------------------------- PHP Notice: Use of undefined constant MY_DEFINED_CONSTANT - assumed 'MY_DEFINED_CONSTANT' in ./test.php on line 6 value of constant is TRUE ---------------------------------------- The automatic conversion of a non existing constant to a string is annoying. But making it a fatal error is probably more problematic. And off course you get a TRUE result in the expression as the string is not empty or 0. I always recommend programming with error_reporting set to *ALL* errors reported. In production you can reduce that a bit, but when programmed correctly the logfile will still be small. Previous Comments: ------------------------------------------------------------------------ [2009-11-30 10:38:45] [email protected] I wouldn't mind kicking this out in PHP 6 either... ------------------------------------------------------------------------ [2009-11-30 10:28:09] wdolek at gmail dot com Description: ------------ when using undefined constant, PHP consider name of constant to be string. when using this constant in if () or anywhere else, string value is cast as TRUE, which could confuse developer Reproduce code: --------------- // define('MY_DEFINED_CONSTANT', FALSE); if (MY_DEFINED_CONSTANT) { echo 'value of constant is TRUE'; } else { echo 'value of constant is FALSE'; } Expected result: ---------------- * error or at least warning, that we are using undefined constant * Actual result: -------------- value of constant is TRUE ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=50331&edit=1
