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
>
>

Reply via email to