Bug #13505 Updated: Reserved words can be used as constant names
| From: | zak@php.net | Date: | Tue, 02 Oct 2001 10:44:18 +0000 |
| Subject: | Bug #13505 Updated: Reserved words can be used as constant names | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-67015@lists.php.net to get a copy of this message | ||
ID: 13505
Updated by: zak
Reported By: carlfox@netdoor.com
Status: Closed
Bug Type: Unknown/Other Function
Operating System: All
PHP Version: 4.0.6
Assigned To: zak
New Comment:
The performance loss of adding reserved word checking to
define() was deemed greater than the benefit. It looks
like the behavior of define() will stay just the way it
is.
Previous Comments:
------------------------------------------------------------------------
[2001-10-02 03:27:07] zak@php.net
Patch that checks for function/class name and reserved
word conflicts sent to php-dev list.
------------------------------------------------------------------------
[2001-10-02 00:33:18] zak@php.net
New (in any combination of case - i.e. new, NEW, NeW, ...)
is a reserved word. Its presence indicates that you wish
to instantiate a new object from an existing class.
i.e.
class vegetable {
var $name;
function vegetable ($name) {
$this->name = $name;
}
}
$tomato = new vegetable ('tomato');
So this behavior is not out of line. However, define
should probably throw an error when attempting to create a
constant based on an reserved word.
I will work up a patch shortly.
------------------------------------------------------------------------
[2001-10-02 00:05:58] carlfox@netdoor.com
###########################################################
# POP UP MENU SUB ROUTINE (Condition)
function display_column_g ($label, $row, $col_name, $editable)
{
print ("<TR>\n");
printf ("<TD><B><font
color=\"red\">%s</font></B></TD>\n", htmlspecialchars ($label));
$value = htmlspecialchars ($row[$col_name]);
if ($editable) # display as edit field
{
$str = sprintf ("<SELECT NAME=\"row[%s]\">",$col_name);
$str .= sprintf ("<OPTION VALUE=\"$row[Condition]\">$row[Condition]\n",
$row[Condition]);
$str .= sprintf ("<OPTION VALUE=\"\">\n");
$str .= sprintf ("<OPTION VALUE=\"New With Warranty\">New With
Warranty\n", New_With_Warranty);
$str .= sprintf ("<OPTION VALUE=\"New\">New\n", New_);
$str .= sprintf ("<OPTION VALUE=\"Unused With Warranty\">Unused With
Warranty\n", Unused_With_Warranty);
$str .= sprintf ("<OPTION VALUE=\"Unused\">Unused\n", Unused);
$str .= sprintf ("<OPTION VALUE=\"Rebuilt With Warranty\">Rebuilt With
Warranty\n", Rebuilt_With_Warranty);
$str .= sprintf ("<OPTION VALUE=\"Rebuilt\">Rebuilt\n", Rebuilt);
$str .= sprintf ("<OPTION VALUE=\"Used\">Used\n", Used);
$str .= sprintf ("<OPTION VALUE=\"Running When Removed\">Running When
Removed\n", Running_When_Removed);
$str .= sprintf ("<OPTION VALUE=\"Scrap\">Scrap\n", Scrap);
$str .= sprintf ("<OPTION VALUE=\"Salvage\">Salvage\n", Salvage);
$str .= sprintf ("<OPTION VALUE=\"%s\"></SELECT>\n", $value);
}
else # display as read-only text
$str = $value;
printf ("<TD>%s</TD>\n", $str);
print ("</TR>\n");
}
###########################################################################
# END POP UP MENU SUBROUTINES
###########################################################################
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=13505&edit=1