2017-11-27 16 views
0

私は、実行時に新しい '自己'を作成するメソッドをクラスに持っています。継承された静的メソッドを使用して継承したクラスの新しいインスタンスを作成

class foo { 
    private $id; 

    public function __construct($id) { 
     $this->id = $id; 
    } 

    public static function byId($id) { 
     return new self($id); 
    } 

} 

そして今、私はFOOからbyIdメソッドを使用して、今、私はバーを行うことができるはずな

class bar extends foo { 
    public function test() { 
    echo "test"; 
    } 
} 

として行うことで、バーでそれを使用したい:: byId(ID)、ただし、これは常にバーオブジェクトではなく親オブジェクトを返します。

byIdが継承されたクラスのオブジェクトを返すかどうかを確認するにはどうすればよいですか?

+0

?何が.. –

+0

Lawrence Cherone私はあなたが何を意味するのか不明です、静的なbar :: byId(id)byId静的メソッドがfooから継承されているところでbar-> test()を呼び出せるようにしたい – pandaJuan

+2

試しました'return new self($ id);'のisnteadを返します。 –

答えて

1

利用return new static($id);の代わりに、 `テスト()`今までに `` FOO :: byId()を呼び出しますどのようreturn new self($id);

関連する問題