Re: new keyword combined with other things...
| From: | Alexandru Patranescu | Date: | Tue, 07 Dec 2010 21:01:09 +0000 |
| Subject: | Re: new keyword combined with other things... | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-309896@lists.php.net to get a copy of this message | ||
I know how to do it in other ways.
I was just wondering why the simple new Object() -> method won't work. new
operator has precedence over.......
That must be the problem. -> is not an operator. Is not in this list:
http://php.net/manual/en/language.operators.precedence.php
That must be done. -> should be an operator!
Alex
On Tue, Dec 7, 2010 at 10:49 PM, Jim Lucas <lists@cmsws.com> wrote:
> On 12/7/2010 7:40 AM, Alexandru Patranescu wrote:
> > In many other languages this will work:
> >
> > *$result = new Object() -> method();*
> >
> > But in php, it fails at parsing.
> > I've tried with parenthesis around new but nothing. Anyhow, as I saw
> later,
> > *new* operator has precedence over others so this couldn't be a solution.
> > I know a static function can be defined and the above statement can
> > transform into
> >
> > *$result = Object::getNewInstance() -> method()*
> >
> > but is there any way to write it directly? and if not, why isn't this
> > implemented yet and when will it be?
> >
> > best regards,
> > Patranescu Alexandru
> >
>
>
> Here is what I do if I want to make it a one liner...
>
> <?php
>
> function myNew($obj='stdClass') {
> return new $obj();
> }
>
> class CustomClass {
> function PrintString($str='Something')
> {
> print($str);
> }
> function ReturnString($str='Something')
> {
> return $str;
> }
> }
>
>
> myNew('CustomClass')->PrintString();
>
> echo myNew('CustomClass')->ReturnString('Something Else');
>
> $var = myNew('CustomClass')->ReturnString('And again...');
>
> echo $var;
>
> ?>
>
> I also use the following if I want to use the Singleton method of getting
> my data.
>
> <?php
>
> class myClass {
> static $_instance;
> static function run($DefaultValues=null)
> {
> if(self::$_instance === null)
> {
> //First and only construction.
> self::$_instance = new self($DefaultValues);
> }
> return self::$_instance;
> }
> function PrintString($str='Default Value')
> {
> print $str;
> }
> function ReturnString($str='Something')
> {
> return $str;
> }
> }
>
> myClass::run()->PrintString();
>
> echo myClass::run()->ReturnString();
>
> $var = myClass::run()->ReturnString();
>
> echo $var;
>
> ?>
>
> YMMV
>