2016-04-04 16 views
-2

「通常の」プロパティとメソッドではなく、静的なメソッドとプロパティを使用する必要があるのは不思議でした。私はオブジェクトのインスタンスを作成せずに静的メソッドを呼び出すことができることを知っていますが、静的メソッドやプロパティを使用する別の例を見つけることはできません。PHP静的オブジェクトとメソッド

誰かが静的キーワードをいくつかの例で説明して、いつどのように使用するか(または使用しない)ことができますか?

+1

[PHP静的関数]の可能な複製(http://stackoverflow.com/questions/902909/phpstatic-function) – wiredniko

答えて

1

値は、同じタイプのすべてのクラスを介して共有されています

class foo{ 
    static $bar; 

    function __construct($set = null){ 
    if($set){ 
     self::$bar = $set; 
    } 

    echo self::$bar; 
    } 
} 

$a = new foo(1); // 1 
$b = new foo(); // 1 

は、彼らは、(例えば)データベース接続のように、クラス全体で共有するためのリソースを保持するために非常に便利です。特定の関数などに対して何回呼び出しが行われたかの統計情報を保持するためにも使用できます。

静的メソッドは、同じスコープ内にグループ化されたコードを保持するのに便利です。機能するクラスのインスタンス。 たとえば、クラスのインスタンスを保持する静的変数を返すことがあります。それらは本質的にメソッドなので、インターフェイスに従うようにバインドされており、クラスには他の1回限りのクラスと同じフローを持つgetInstance()という静的メソッドを強制的に設定できます。 (ヒント、それは特性と素晴らしい作品)

0

静的メソッドは、メソッドがオブジェクトの状態を変更しない場合に便利です。

class yourMom{ 
    public $name; 
    function __construct($name, $ageInYears){ 
     $this->name = $name; 
     $this->age_in_days = self::yearsToDays($ageInYears); 
    } 

    private static yearsToDays($years){ 
     return 365 * $years; 
    } 
} 

この例では、基本的にヘルパー機能です。静的proptery年代の

関連する問題