tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

staticキーワード(静的な変数の定義 )のメモ

タイトル通りstaticキーワードのメモになります。
(クラスメンバにつけてスタティックメンバを云々。。。の話ではないです。あしからず)

なんとなーくでstaticについて調べていたら
「静的な変数の定義」という言葉がでてきました。

あまり気にしてなかったのですが調べてみたらあまり理解してねーやってことで
さっそくスクリプト書いて試したのをメモっておきます

まずはstatic使わない場合

<?php
function static_test(){
  $a = 0;
  $a++;
  echo $a . "\n";
}
static_test();
static_test();
static_test();
?>

出力結果

# php -f static_var_test.php
1
1
1

次にstatic使った場合

<?php
function static_test(){
  static $a = 0; //←違いはここだけ
  $a++;
  echo $a . "\n";
}
static_test();
static_test();
static_test();
?>

出力結果

# php -f static_var_test.php
1
2
3

関数が最初にコールされたときにのみ初期化されるらしいです。これが「静的な変数の定義」と。

phpにおけるstaticには下記の3つの用途があるようです

  • クラスの静的なメソッドやプロパティを定義する
  • 静的な変数の定義
  • 静的遅延束縛

参考までに。
http://php.net/manual/ja/language.oop5.static.php