On Wed, Jan 20, 2010 at 01:05:14PM +0100, Christian Grobmeier wrote:
> On Wed, Jan 20, 2010 at 11:35 AM, Christian Grobmeier
> <[email protected]> wrote:
> >>> Why would this imply "dropping" the object?
> >>>
> >>> This:
> >>> $foo = (new bar())->someSetter();
> >>> Looks a lot better than this
> >>> $foo = new bar();
> >>> $foo->someSetter();
> >>
> >> The second version is much clearer. You know exactly what $foo is. In
> >> the shortened version you have no idea what $foo is without reading the
> >> code for the someSetter() method. On first glance I would assume that
> >> $foo would be the success/failure return of the setter and that the
> >> object is dropped.
>
> I also think that:
> $foo = (new bar())->someSetter();
> is assigning the return value of the setter to $foo. I would love to
> have a language feature like anonymous classes, but if $foo contains
> the bar-object after this line - wow, how would I hate this. From my
> understanding both examples should act differently.
someSetter() could return $this, although unlikely. The result of the line
above would be that the bar object is garbage collected after being created
& method someSetter() invoked. To keep it one would have to do:
$foo = ($bar_obj = new bar())->someSetter();
I don't know if it would be useful in a 'new', but if you had a method
to find something (returning an objet) and then whole set of methods
on the returned object, eg:
$johnSmith = $employees->findEmployee('John Smith');
$johnSmith->increaseSalary(1000);
this could be simplified to:
$employees->findEmployee('John Smith')->increaseSalary(1000);
This is the sort of reason why chaining is useful. It is also, IMHO,
quite readable.
Regards
--
Alain Williams
Linux/GNU Consultant - Mail systems, Web sites, Networking, Programmer, IT
Lecturer.
+44 (0) 787 668 0256 http://www.phcomp.co.uk/
Parliament Hill Computers Ltd. Registration Information:
http://www.phcomp.co.uk/contact.php
Past chairman of UKUUG: http://www.ukuug.org/
#include <std_disclaimer.h>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php