Bug report 13505 got me thinking about the behavior of define() - if
you try to define a constant name that is a reserved word, or an
existing function or class name, no warning is generated.
This could have been a conscious decision - a case where it was
decided that some safety could be traded for a bit of extra speed. If
it wasn't, then here is a patch to check that the constant name does
not clash with a reserved work, function name or class name.
I used an array of reserved words and a for loop to handle finding
conflicting reserved words. Is there a better way to do this. AFAICT
the other methods for handling reserved word conflicts are handled at
the parser level. i.e. Trying to define 'function and (){}' generates a
parser error.
Anyhoo, perhaps someone could take a look at the patch? :)
--
Zak Greant
PHP Quality Assurance Team
http://qa.php.net/
"We must be the change we wish to see." - M. K. Ghandi