#22047 [Com]: PHP pollutes the namespace w/ (what looks like) its grammar tokens

From: Date: Wed, 05 Feb 2003 11:00:42 +0000
Subject: #22047 [Com]: PHP pollutes the namespace w/ (what looks like) its grammar tokens
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-32177@lists.php.net to get a copy of this message
ID: 22047 Comment by: john@grabjohn.com Reported By: szepe@pinerecords.com Status: Wont fix Bug Type: *General Issues Operating System: Linux PHP Version: 4.3.0 New Comment: In order to avoid breaking backward compatibility with existing scripts, would it not be possible to allow pre-defined constants to be hidden when a constant is defined in a script with the same name? As long as a script doesn't need to use both the pre-defined constants, and the new ones, (which a script designed for an old PHP version should not need to do anyway), I can't think of any reason why that wouldn't be an almost perfect solution - problems would only occur if a script assumed that a constant which was not pre-defined, but not defined in the script, evaluated to it's own name. Previous Comments: ------------------------------------------------------------------------ [2003-02-05 01:00:19] chrala@sajt.cz > A notice is fine, redefinition of a constant being only a NOTICE? you can't be serious! ------------------------------------------------------------------------ [2003-02-05 00:49:18] szepe@pinerecords.com How's changing a NOTICE into a WARNING going to break anything, anyway? diff -ur a/Zend/zend_constants.c b/Zend/zend_constants.c --- a/Zend/zend_constants.c 2002-10-09 16:17:53.000000000 +0200 +++ b/Zend/zend_constants.c 2003-02-05 07:46:35.000000000 +0100 @@ -265,7 +265,7 @@ if (!(c->flags & CONST_PERSISTENT)) { zval_dtor(&c->value); } - zend_error(E_NOTICE,"Constant %s already defined", lowercase_name); + zend_error(E_WARNING, "Constant %s already defined", lowercase_name); ret = FAILURE; } free_alloca(lowercase_name); ------------------------------------------------------------------------ [2003-02-04 12:46:48] szepe@pinerecords.com Guys, if this is how you deal with backwards compatibility issues, then I'm scared. I've been maintaining a big PHP project that's about 1MB of very clean code and I need to keep it alive. This particular bug gave me quite a bit of a headache. I've provided valid arguments on why a (trivial) change should be made, and you seem to not really care. That's not giving me nice prospects into the future, is it? Come on, we're talking about constants here! If a constant is redefined by a program, then that program is broken by definition and needs to be told on an appropriate level. ------------------------------------------------------------------------ [2003-02-04 12:31:13] sniper@php.net It's fine as it is -> wont fix. ------------------------------------------------------------------------ [2003-02-04 11:48:17] szepe@pinerecords.com A NOTICE definitely is NOT sufficient. Remember many setups running older PHP software set "error_reporting = E_ALL & ~E_NOTICE", because the amount of notices on undefined array indices and undefined variables can be quite overwhelming -- and it is precisely these setups that are likely to be bitten by this problem. Redefinition of a constant should be a WARNING, I must insist. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/22047 -- Edit this bug report at http://bugs.php.net/?id=22047&edit=1

« previous php.bugs (#32177) next »