On Tue, Sep 22, 2015 at 9:24 PM, Bob Weinand <bobw...@hotmail.com> wrote:
> > Am 22.09.2015 um 20:05 schrieb Dmitry Stogov <dmi...@zend.com>: > > The current PHP version emits two warning on similar constructs, and this > is explainable because we explicitly "use" $y. > > $ sapi/cli/php -r 'function foo(){(function($x) use ($y){$y=3; return > $y+$x;})(5);return $y;} var_dump(foo());' > PHP Notice: Undefined variable: y in Command line code on line 1 > > PHP Notice: Undefined variable: y in Command line code on line 1 > > NULL > > Thanks. Dmitry. > > > Well, yes. But that obviously needs alternate handling here as we don't > have full analysis to look at whether we'd need to import or not. Hence we > just are importing everything if it's used in Closure scope and defined in > parent scope. > > Because we obviously don't want this to emit a notice: > > function foo() { > return ($x ~> { > $y = 2; > return $x + $y; > })(10); > } > > Else it'd be totally impossible to define any variables... > > Also, the long form sets $y to NULL in the Closure (we just have two > notices there because you return $y; too… if you remove that, you'll be > left with just one notice. > I saw, you have fixed that warning on implicit use. Thanks. Dmitry. > > Bob >