Create class instance from within static method
As the title says, I'm wanting to create an instance of a class from within a static method of the same class. I've figured out so far is that I can by doing something like this:

    class Foo{

     public $val;

     public static function bar($val){
      $inst = new Foo;
      $inst->val = $val;
      return $inst;
     }

    }

Which therefore lets me do this.

    $obj = Foo::bar("some variable");


Which is great.

So now the questions. Is there an easier way of doing this that I'm not aware of, or any shortcuts to achieving the same result? Are there any advantages or disadvantages of creating an instance in this fashion?

Thanks.
Create class instance from within static method
===

As the title says, I'm wanting to create an instance of a class from within a static method of the same class. I've figured out so far is that I can by doing something like this:

    class Foo{

     public $val;

     public static function bar($val){
      $inst = new Foo;
      $inst->val = $val;
      return $inst;
     }

    }

Which therefore lets me do this.

    $obj = Foo::bar("some variable");


Which is great.

So now the questions. Is there an easier way of doing this that I'm not aware of, or any shortcuts to achieving the same result? Are there any advantages or disadvantages of creating an instance in this fashion?

Thanks.