|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2012-05-26 20:31 UTC] valentiny510 at yahoo dot es
Description:
------------
Imagine I have the, unset ( $GLOBAL )..
To access a 'global' object into the function, first must be called trowght global..
function test()
{
global $object;
return $object->some_method( );
}
I wonder if is posible to use (in the future :P) the 'global' like other language structures.. Ex:
function test()
{
return( global $object->some_method( ) );
}
I know ... you will ask me why not use the namespaces, reflections, references, traits, or whatever.. but .. its not the point ...
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Nov 20 02:00:01 2025 UTC |
For now: <?php function test() { return( $GLOBALS['object']->some_method( ) ); } ?>Imagine I have unset the, ( $GLOBALS ).. To access a 'global' object into the function, first must be called trowght global.. function test() { global $object; return $object->some_method( ); } I wonder if is posible to use (in the future :P) the 'global' like other language structures.. Ex: function test() { return( global $object->some_method( ) ); } I know ... you will ask me why not use the namespaces, reflections, references, traits, or whatever.. but .. its not the point ...My solution would be to introduce global as a scope identifier, so you could use it as: global::$object = new stdClass; global::$object->test = 'This is just a test'; function test() { return global::$object->test; } Although I do believe globals are evil and static class variables should be used at all times, this is a neat addition to avoid the very ugly and unclear global keyword. As it is now, you have to define a variable as global for it to resolve and act on the global variable. This makes code hard to read as it is not directly visible that this is the case. The above syntax would solve this problem.As already noted in this thread, using globals is highly discouraged and as such it does not make sense to add any further functionality improving their use. Also (you say this yourself) you can use $GLOBALS. I don't understand why you don't want to use it. Language features aren't added simply because someone says "Hey, I want to access globals in one expression, but I don't want to use $GLOBALs, please add a feature that is fully equivalent but uses a different syntax". But even with the constraint of not using $GLOBALS you can easily build a function that would do something equivalent: function getGlobal($name) { global $$name; return $$name; } $foo = getGlobal('foo'); Marking this as Wontfix.Joost if you can explain the 'evil' difference between this 2 examples and also tell me whitch is more 'hard to read' and why... I will give you the Nobel prize por programming... function test( ) { return global $variable; } function test( ) { global $variable; return $variable; } and... nobody asked you about your 'solution' with scope identifier global:: can be more evil yes.. but I do not care about your opinion, sorry