#18684 [Ver->Bgs]: Parser error when trying to create a new class instance in a static definition
| From: | stas@php.net | Date: | Mon, 09 Sep 2002 15:15:45 +0000 |
| Subject: | #18684 [Ver->Bgs]: Parser error when trying to create a new class instance in a static definition | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-18800@lists.php.net to get a copy of this message | ||
ID: 18684
Updated by: stas@php.net
Reported By: michiwalter@gmx.de
-Status: Verified
+Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Windows 2000, Tru64
PHP Version: 4.2.1, 4.3.0-dev
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
Static vars as of now can be initialized only by static (meaning,
constant) expressions. So, use your workaround.
Previous Comments:
------------------------------------------------------------------------
[2002-08-01 14:36:48] michiwalter@gmx.de
Well I am under the impression that in the definition
static $var=<value>;
<value> should be assigned to $var only the first call...so what I want
to do is to use that for implementing a singleton, like that:
class Class
{
//...
function &getSingleton()
{
static $instance=new Class();
return $instance;
}
// ...
}
(similar to Class& getSingleton() { static Class instance; return
instance; } in C++, and yeah, I know that that ain't thread safe;)
Anything wrong with that?
------------------------------------------------------------------------
[2002-08-01 14:05:54] nohn@php.net
Verified this "bug" with 4.3.0-dev on Compaq Tru64 though I can't see
any sense in what you're trying to do.
------------------------------------------------------------------------
[2002-08-01 10:53:19] michiwalter@gmx.de
Summary:
Parser error when trying to create a new class instance in a static
definition.
Error reproducable on:
- Windows 2000/IIS/PHP 4.2.1 (CGI)
- Windows 2000/Apache 1.3.24/PHP 4.2.0
- Linux deathrow 2.4.9-34/Apache 1.3.26/PHP 4.2.2
Test script:
<?php
class Test
{
};
function test()
{
static $var=new Test();
}
?>
Error message:
Parse error: parse error, unexpected T_NEW in __FILE__ on line
__LINE__
Known workarounds:
...
function test()
{
static $var=NULL;
if(NULL===$var)
$var=new Test();
return $var;
}
...
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=18684&edit=1