Edit report at https://bugs.php.net/bug.php?id=50110&edit=1
ID: 50110 Comment by: youdontneedme at o2 dot pl Reported by: n8grndr1087 at optonline dot net Summary: Static (File Scope) Variables Status: Open Type: Feature/Change Request Package: Scripting Engine problem Operating System: * PHP Version: * Block user comment: N Private report: N New Comment: There is no information about such usage in documentation. (well, maybe that's why it does not work) But if such usage is not documented why syntax: static $age = 18; is *valid* outside class? I agree, this should have same consequences as in C lang. Previous Comments: ------------------------------------------------------------------------ [2009-11-07 18:19:38] n8grndr1087 at optonline dot net This feature would also be useful for static (file scope) functions as well. ------------------------------------------------------------------------ [2009-11-07 05:07:19] n8grndr1087 at optonline dot net Description: ------------ Global variables should be able to be declared 'static'. Static globals, like in C, would only be accessible from the current file's scope. This would be a good way to protect internal variables used behind the scenes in a particular file. If there is any effective way to protect variables that I overlooked, outside of PHP classes, let me know. I understand that the possibility of this depends on how the include/file processing mechanism works. Reproduce code: --------------- myvar.inc: <?php static $myvar = 1; function get_myvar() { global $myvar; // Since its not a true global, this may be different return $myvar; } function set_myvar($v) { global $myvar; $myvar = $v; } ?> test.php: <?php include('myvar.inc'); echo get_myvar().'<br/>'; set_myvar(0); $myvar = 10000; echo get_myvar(); ?> Expected result: ---------------- 1 0 Actual result: -------------- 1 10000 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=50110&edit=1