You surely could add a factory to every class in your project, perhaps with a trait, but you wouldn't have it for core and third party classes.
On 30 November 2011 19:59, Will Fitch <will.fi...@gmail.com> wrote: > Again, back to my question of why not use: > > MyComponent::factory($bar, $option); > > Depending on what ::factory does, it could then pass $option(s) to the > constructor or method getting your instance needed. > > > On Nov 30, 2011, at 2:56 PM, Dmitri Snytkine wrote: > > > Just for such case I use factory methods in a class, so I can do this: > > MyComponent::factory($bar)->configure($option) > > > > A clean one-liner. > > > > The static factory method just returns the object of class, your standard > > factory pattern. > > Plus you may gain extra flexibility from using factory instead of > directly > > calling new() > > > > Dmitri Snytkine > > Web Developer > > Ultra Logistics, Inc. > > Phone: (888) 220-4640 x 2097 > > Fax: (888) 795-6642 > > E-Mail: dsnytk...@ultralogistics.com > > Web: www.ultralogistics.com > > > > "A Top 100 Logistics I.T. Provider in 2011" > > > > > > -----Original Message----- > > From: Ralph Schindler [mailto:ra...@ralphschindler.com] > > Sent: Wednesday, November 30, 2011 2:51 PM > > To: Nikita Popov > > Cc: internals > > Subject: Re: [PHP-DEV] 5.4's New De-referencing plus assignment > > > > Ironically, quite the opposite is something I find useful: > > > > ($foo = new MyComponent($bar))->configure($options); > > > > In a single line, instantiate and configure (via an API call) an object. > > The return of configure() is not important to me, but the brevity of > > that workflow, and the result of "new" is. > > > > -ralph > > > > > > On 11/30/11 1:13 PM, Nikita Popov wrote: > >> To me the main problem here is that $bar = ($foo = new Foo)->bar() > >> simply doesn't make much sense. It is equivalent to: > >> $foo = new Foo; > >> $bar = $foo->bar(); > >> Which is much cleaner and easier to understand. > >> > >> The plain (new Foo)->bar() syntax *is* useful for cases like (new > >> ReflectionClass($class))->implementsInterface('Foo'), where you need > >> only one single bit of information from a class. > >> > >> Nikita > >> > >> On Wed, Nov 30, 2011 at 8:02 PM, Ralph Schindler > >> <ra...@ralphschindler.com> wrote: > >>> Nikita, > >>> > >>> You're completely right about the expanded expressions, but I'm not > sure > > its > >>> an edge-case per-se. > >>> > >>> The problem with the current syntax is that the resultant of the 'new' > >>> operation is lost UNLESS your chained method returns $this - which IMO > > makes > >>> it about as 1/2 as useful as it really could be. > >>> > >>> In the case of "new" though, the resultant is always an object, it > seems > >>> like it should be permissible to change the parser to allow for > variable > >>> assignment of the target object. > >>> > >>> I think for people just trying out this new behavior (by seeing it in > the > >>> release notes as (new Foo)->bar()), the next logical thing is to try > this > >>> syntax: > >>> > >>> ($foo = new Foo)->bar() > >>> > >>> // OR in bison > >>> '(' variable '=' new_expr ')' > >>> > >>> I did it, and I see other people doing it too. So I guess the question > > is... > >>> "how edge case is this edge case?" :) > > > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >