php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #27059 Variable with empty name can be made
Submitted: 2004-01-27 10:17 UTC Modified: 2004-01-29 09:57 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:0 of 0 (0.0%)
From: uno at venus dot dti dot ne dot jp Assigned:
Status: Wont fix Package: Scripting Engine problem
PHP Version: 4CVS, 5CVS OS: *
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: uno at venus dot dti dot ne dot jp
New email:
PHP Version: OS:

 

 [2004-01-27 10:17 UTC] uno at venus dot dti dot ne dot jp
Description:
------------
Variable or object property can be made with empty name.
This behaviour doesn't match the manual.

http://www.php.net/manual/en/language.variables.php
Variable names follow the same rules as other labels in PHP.
A valid variable name starts with a letter or underscore,
followed by any number of letters, numbers, or underscores.
As a regular expression, it would be expressed thus:
'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' 

http://www.php.net/manual/en/language.oop.php
A class is a collection of variables and functions working
with these variables.


Reproduce code:
---------------
<?php
error_reporting(E_ALL);

${''} = 'abc';
echo ${''};

class X{
}
$x = new X;
$x->{''} = 'def';
echo $x->{''};
?>


Expected result:
----------------
Error. (warning or notice are acceptable for me)


Actual result:
--------------
abcdef


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-01-28 21:37 UTC] iliaa@php.net
It would be too slow to add checks for the various strange 
things you can do inside {}, simply because these checks 
would need to occur realtime vs script parsing time. 
 [2004-01-29 00:00 UTC] uno at venus dot dti dot ne dot jp
Fmm...
When you read ${''} (or $x->{''}) without assigning, PHP notices 'Undefeined variable(property): in ...' on current implementation. So I suppose that checks need to be added only when assiging new dynamic variable and performance problem may be not too heavy.
 [2004-01-29 09:13 UTC] moriyoshi@php.net
No matter how much it would slow down the exection, I 
think we ought to maintain the backwards compatibility 
as I know there are several scripts that depend on the 
behaviour.

 [2004-01-29 09:57 UTC] uno at venus dot dti dot ne dot jp
Sure. I understand backward compatibility is important. Accuracy of language specification also.
If development team take this behaviour not a bug, I suppose that definition of variable name in the manual needs a little more clarification.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Mon May 12 15:01:27 2025 UTC