Ferenc Kovacs wrote:
On Thu, Dec 9, 2010 at 11:14 AM, Andrey Hristov <p...@hristov.com
<mailto:p...@hristov.com>> wrote:
 Hi guys,
the topic says most of it. What do you think about deprecating the
global keyword and $GLOBALS with it? Together with this making
$_REQUEST, $_GET and $_POST read-only as they should be used only to
read-only anyway.
The reason for global + GLOBALS is that these are abused and which
leads to spaghetti programs, when used by unexperienced users. Also
they have impact on side effects from functions that don't only rely
their parameters.
Best,
Andrey
Please next time write an rfc before starting a thread like this.
a RFC can crystalize from this thread.
I'm pretty much against the idea.
That would be the most dramatic change in the language in the history of
php.
pretty dramatic change was the change to the object model between 4 and
5. Dropping the usage of references, dropping of exchange of $this. And
also register_globals. register_globals was harder to fix, because you
can't just grep and find what variables you need from the URLs.
Situation is different with $GLOBALS and "global", as a single grep can
show you whether an application needs change or not.
The register_globals is/was a much bigger problem/bad practice and it
take 10 years to remove it(we are almost there...).
And to fix the applications, one would either completely restructure all
of the functions/methods to pass all of the required data from the
global scope, or they would do the easy way: export all of the global
variables into a singleton registry.
I am not against global variables, I'm against usage of $GLOBALS and
"global".
From a Framework point of view, they should save all of the
(super)global variables from the global scope, because the frameworks
doesn't use/run code in the global scope except the bootstrap, so they
couldn't access that either, but they won't know what the developer who
uses the framework want's to access from the global scope.
And what about global constants? They are also screwing up the
Dependency Injection, and the static functions/properties, and the
 singletons also.  Should we ban those?
no, you got me wrong. I will repeat - global variables won't cease to
exist, but $GLOBALS and "global" as means to access them should be
removed. If a function needs data it should get it passed to it.
Tyrael
Andrey
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php