> Yes, the original used "$this->getFooBar()" -- but it could have been
> "$someOtherObject->getFooBar()"


Yep, you and Anthony are right, my comment was stupid...

Then I have an other objection :)

I'm not comfortable with mixing declarative lines with expressions:
function (..) use (..) is always purely declarative, whatever the (..)
but
function (..) use ((expression) as $foo) isn't any more.

I would feel the same e.g. with a syntax like:
function ($a = $foo->bar()) {} (a closure with default argument calculated
once but give as expression.)

If you like "use ((expr) as $foo)", do you like the above?
This is an open question, a yes would be coherent,
but otherwise, why allow one and not the other?




>  > > Also, remember that the closure is in fact another function, a
> function
> > > that performs its own actions independent of the parent.
> >
>
> Actions may be independent, but as a closure is declared inside its
> parent,
> > both codes have very strong relationship. For the reader, overriding this
> > relationship with new closure-local var names can weaken its
> understanding
> > of the code don't you think?
>
> The closure is a function itself; readability within it is just as
> important as readability of the parent. I'd personally rather not have a
> lot of boilerplate code marshalling variables to start off my closure --
> I'd rather they were simply declared and ready for use.
>


The closure is yours, but the parent is also yours, so if you think $l is
better than $long, then why not for the parent also?
Naming (and understanding) things is hard enough to not give two names to
the same code-local thing...

But that's only me sharing my feeling :)

Nicolas

Reply via email to