Bug #13505 Updated: Reserved words can be used as constant names

From: Date: Tue, 02 Oct 2001 07:27:07 +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-66976@lists.php.net to get a copy of this message
ID: 13505
Updated by: zak
Reported By: carlfox@netdoor.com
Old Summary: The word "New" alone causes compilation to abort while "New_"
allows compile.
Old Status: Analyzed
Status: Closed
Bug Type: Unknown/Other Function
Old Operating System: 
Operating System: All
PHP Version: 4.0.6
Assigned To: zak
New Comment:

Patch that checks for function/class name and reserved 
word conflicts sent to php-dev list.


Previous Comments:
------------------------------------------------------------------------

[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



Thread (5 messages)

« previous php.dev (#66976) next »