2016-07-05 11 views
-1

私はFooという名前の巨大なクラスを持っているとしましょう。 このクラスを別のクラスで何度も呼び出す必要がある場合は、それを使用する最良の方法は何ですか?複数の宣言よりもPHPクラスのパフォーマンス

注:バーはFooを使用する唯一のクラスではありません。

オプション#1(それが必要なときにオブジェクトの作成):

class Bar 
{ 
    public function myMethod($arg) 
    { 
     $foo = new Foo(); 
     $something = $foo->doSomething($arg); 

     return $something; 
    } 
} 

オプション#2(一度作成):

class Bar 
{ 
    protected $foo; 

    public function __construct() 
    { 
     $this->foo = new Foo(); 
    } 
} 

オプション#3(fooは静的する):

class Bar 
{ 
    public function myMethod($arg) 
    { 
     return Foo::doSomething($arg); 
    } 
} 

オプション#4:

私が言うと思います

//私にそれを行うための適切な方法を教えて

+1

** **巨大なクラス**とはどういう意味ですか?クラスは巨大ではありません! –

+0

引数/パラメータとして挿入しますか? – Rasclatt

+0

@bub - _huge_は主観的です。相対的な言及はもちろんですが。 –

答えて

1

最良の方法は、Barクラスの外Fooをインスタンス化し、依存関係としてそれを注入することである - これを行うための最善の方法は、コンストラクタを介して次のようになります。

class Bar 
{ 
    private $foo; 

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

$foo = new Foo(); 
$bar = new Bar($foo); 

次に、依存関係としてFooを持つすべてのクラスについて同じ処理を行います。適切な場合はインスタンスを再利用するか、必要に応じて新しいインスタンスを作成できます。

+0

完全にOPにも良いアイデアを注入することに同意します。それは巨大であればクラスFooを分解することです。 –

+0

はプロパティ$ fooで、グローバル$ fooはFooの2つのコピーですか? – domal

+0

Fooをインスタンス化してBarコンストラクタに渡し、参照渡し(同じインスタンス) –