Re: Inconsistencies in 5.3

From: Date: Tue, 05 Aug 2008 11:21:25 +0000
Subject: Re: Inconsistencies in 5.3
References: 1 2 3 4 5 6  Groups: php.internals 
Request: Send a blank email to internals+get-39662@lists.php.net to get a copy of this message
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 (#39662) next »