前のページ

PHPのstaticキャッシュが何かと簡単なサンプ ルコードで解説

みなさんこんにちは、あべ いさぢです

今回はPHPのstaticキャッシュが何かと簡単なサンプ ルコードで解説します。


staticキャッシュとは何か

同じ関数内で、2回目以降は再計算しない仕組みです。

簡単に言うと値の保持をします。

サンプルコードで考えた方が理解が進むのでサンプルコードで解説します。


サンプルコード

まずはstaticキャッシュを使わないコードで考えます。

function counter() {
    $count = 0;
    $count++;
    echo $count . "\n";}

counter();counter();counter();

結果は下記になります。

111

こう表示される理由は下記です。

呼び出し① → $count = 0 → +1 → 1
呼び出し② → $count = 0 → +1 → 1
呼び出し③ → $count = 0 → +1 → 1

counterメソッドを呼び出すたびに$countは0から始まります。

次はstaticキャッシュを使った場合です。

function counter() {
    static $count = 0;
    $count++;
    echo $count . "\n";}

counter();counter();counter();

結果は下記になります。

123

理由は下記です。

呼び出し① → $count = 0 → +1 → 1
呼び出し② → $count = 1 → +1 → 2
呼び出し③ → $count = 2 → +1 → 3

staticを使うと前回の値を保持します。

1回目の呼び出しで$countは0からスタートして1になり2回目の呼び出しで1からスタートして2になり3回目の呼び出しで2からスタートして3になります。

だから$countはcounterメソッドを呼び出すたびに1ずつ増えていきます。

前使った値を次もそのまま使いたい時に利用したりする時に有効です。








戻る