#18684 [Ver->Bgs]: Parser error when trying to create a new class instance in a static definition

From: 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

« previous php.bugs (#18800) next »