Re: Inconsistencies in 5.3

From: Date: Tue, 05 Aug 2008 11:28:32 +0000
Subject: Re: Inconsistencies in 5.3
References: 1 2 3 4 5 6 7  Groups: php.internals 
Request: Send a blank email to internals+get-39663@lists.php.net to get a copy of this message
Of course not, but it will be very hard to understand difference and fix parser conflicts. Thanks. Dmitry. Marcus Boerger wrote:
Hello Dmitry, Tuesday, August 5, 2008, 8:38:07 AM, you wrote:
Allowing "use" inside function body assuming allowing it everywhere.
$x = function($arg) {
                if ($arg) {
                        use $a;
                } else {
                        use $b;
                }
        };
I don't like such ability and of course we won't be able to use "use" keyword as it will conflict with import statement.
So the import statement use can be placed inside the body of a function as an expression?
Moriyoshi Koizumi wrote:
Dmitry Stogov wrote:
Marcus Boerger wrote:
Hello Dmitry, Monday, August 4, 2008, 8:55:00 AM, you wrote:
Hi Marcus, see below Marcus Boerger wrote:
Hello Internals, please let's not introduce new inconsistencies. Rather lets make new stuff consistent with old stuff during the alpha phase of 5.3. 1) new keyword 'use'. Semantically it is the same as 'static' or 'global' so it should be used in the same location.
For me 'use' is the best keyword as it says that closure uses variables from current content. (the same keyword is used for import from namespaces)
To be clear, I wasn't complaining about the keyword per se. I just prefer it to be inside the curly braces of a closure next to global rather than in front of it.
No. The list of lexical variables is a part of the closure definition. The earlier implementation had "lexical" keyword which worked as you are suggesting, but it was much unclear.
I don't think there are many differences in ambiguity between $closure = function ($arg) { use $a; ... }; and $closure = function ($arg) use ($a) { }; Moriyoshi
Best regards, Marcus


« previous php.internals (#39663) next »