Class内で自分自身をnewしたい時

static関数内で自分自身にアクセスしたい場合、$thisは使えないので自分自身をnewするわけだが、
new クラス名にすればいいのだけれど、クラス名を自動で取ってきて生成できればいいな...と思って以下実践。

class HOGE
{
  public static function Func()
  {
  // staticなので当然不可
    $this;

  // ベタ書き。OK
    $instance = new HOGE;

  // エラー
    $instance = new __CLASS__;

  // 一旦変数に入れるとOK
    $class = __CLASS__;
    $instance = new $class;

  // これでもOK
    $instance = new sprintf('%s', __CLASS__);
  }
}