2

私はプログラミング言語としてPHPを使用しています。私は静的メソッドと変数の使用法を本当に理解していません。

  1. いつメットホールドを静的にする必要がありますか?/どのメソッドを静的にする必要がありますか?
  2. どのメットホールドを静的にする必要があるかを識別する方法は?
  3. 長所と短所の静的メソッドと変数?

ありがとう

4

3 に答える 3

2

クラスのプロパティまたはメソッドを静的として宣言すると、クラスのインスタンス化を必要とせずにそれらにアクセスできるようになります。静的として宣言されたプロパティは、インスタンス化されたクラスオブジェクトではアクセスできません(静的メソッドではアクセスできます)。

大規模なOOPベースのプロジェクトで作業している場合は、間違いなく多くのクラス(親クラスと子クラスの両方)で作業していることになります。この不幸な結果は、異なるクラスの要素にアクセスするために、それらを手動で各クラスに渡す必要があることです(さらに悪いことに、インスタンスをグローバル変数に格納する必要があります)。これは骨の折れるイライラを招く可能性があり、コードが乱雑になり、プロジェクトの設計が全体的に悪くなる可能性があります。ありがたいことに、静的要素は任意のコンテキスト(つまり、スクリプト内のどこからでも)からアクセスできるため、オブジェクトからオブジェクトにクラスのインスタンスを渡す必要なしに、これらのメソッドにアクセスできます。

これもチェックしてくださいPHPの静的メソッドは非静的メソッドと何か違いがありますか?

于 2012-09-23T12:20:07.887 に答える
2

メソッドがインスタンス変数にバインドされていない場合、メソッドは静的である必要があります。平面処理を実行していて、関数入力からすべての変数を取得している場合。静的としてマークすることができます。

その利点は、機能を呼び出すためにインスタンスを作成する必要がないため、メモリを節約できることです。

于 2012-09-23T12:20:32.363 に答える
0

クラスのプロパティまたはメソッドを静的として宣言すると、クラスのインスタンス化を必要とせずにそれらにアクセスできるようになります。静的として宣言されたプロパティは、インスタンス化されたクラスオブジェクトではアクセスできません

<?php class Foo {
    public static function aStaticMethod() {
        // ...
    } }

$classname = 'Foo'; $classname::aStaticMethod(); // ( PHP 5.3.0) ?> 

「オブジェクトなしで開始できます」

于 2012-09-23T12:33:09.970 に答える