1

サーバーのパフォーマンスに関して初歩的な質問をしたいです。

各クラスに同じパフォーマンスの回線コードが 1000 個含まれているとします。

関数を使用したい場合は、別の関数に属します。3つの方法があることがわかりました。

  1. クラス内$this->Another_Class = new Another_Class
  2. 静的を使用Another_Class::Wanted_Function()
  3. グローバルglobal $Another_Class

サーバーのパフォーマンスに関してお尋ねしてもよろしいですか? または、魔法の呼び出し以外の選択肢がありますか?

4

2 に答える 2

1

グローバルを何にも使用しないことを強くお勧めします。

静的またはインスタンス化されたクラスを使用するかどうかについては...それは完全にあなたがやろうとしていること次第です。静的メンバー関数は、他の静的メンバー関数/変数にアクセスできる名前空間関数と本質的に同じです。

クラスのインスタンス化は、静的クラスへのアクセスよりも技術的に遅くなりますが、__construct() およびクラス変数の初期化が発生したときに実行されるロジックがある場合のみです。

于 2013-01-17T21:58:36.180 に答える
1

グローバルは常に避けるべきであり、コードの再利用には適していないため、本当に必要でない限り、静的も一般的に避けるべきです。

また、制御の反転や依存性注入などの概念を確認することもできます。つまり、クラス内で依存関係をインスタンス化するのではなく、注入することをお勧めします。
簡単な例:

class Example
{
    protected $foo;

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

    public function doSomething()
    {
        $this->foo->callFooMethod();
    }
}

$example = new Example();
$example->setFoo(new Foo);
$example->doSomething();
于 2013-01-17T22:08:35.450 に答える