2016-09-07 4 views
1

質問には申し訳ありませんが、私はこれがどのように動作するか理解していない:いつPHP関数で値を返すのですか?

class Person { 
    public static $age = 1; 

    public function haveBirthday() { 
     static::$age +=1; 
    } 
} 

$joe = new Person; 
$joe->haveBirthday(); 

echo Person::$age; 

私は理解していないよ、何がこれです:

public function haveBirthday() { 
    static::$age +=1; 
} 

は、そうでない場合はリターン $時代に想定されていません値は失われますか?なぜそれはまだ働いていますか?

ありがとうございます!

+1

静的平均は一度作成され、クラス名でアクセスできるので、一度作成された年齢を考えれば値は –

答えて

1

staticと定義されています。つまり、インスタンスレベルの代わりにclass levelという変数です。

$joe->haveBirthday();を呼び出すと、Person::$age;を使用してアクセスできるPersonクラスの変数class levelが更新されます。

静的変数を返す必要はありません。クラスから直接アクセスできます。

+0

だと思います。ありがとう! –

0

public static $age = 1;これは静的なプロパティであることを示しています。これはインスタンスのプロパティではなく、クラスプロパティとしての意味です。

0

メソッドhaveBirthday()は何も返しません。単純に静的変数$ageを増加させます。

静的変数は、このクラスのすべてのインスタンスで共有されます。あなたのケースでは、すべての人が同じ年齢になるので、それは良い考えではありません。

class Person { 
    public static $age = 1; 

    public function haveBirthday() { 
     static::$age +=1; 
    } 
} 

$joe = new Person; 
$jane = new Person; 
$joe->haveBirthday(); // +1 => 2 
$jane->haveBirthday(); // +1 => 3 

echo Person::$age; // Will return 3 

テストするhere

+0

ありがとうございました! –

+0

@ Jmoon.C Upvoteが役に立ちましたら:) –

関連する問題