gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

「内部的にstaticな変数」の実験

ちょいとお仕事がドッタンバッタンなので、ギア入りっぱなしのまま書いているので本気で備忘録。
読み取れる方は適宜読み取ってくださりませ。


実験コード。

<?php
function hoge() {
  static $i = 0;
  $i ++;
var_dump($i);
}

//
hoge();
hoge();
hoge();

[gallu@localhost ~]$ php ttt.php
int(1)
int(2)
int(3)

うんまぁわかりきった結果。

<?php
class foo {
  function hoge() {
    static $i = 0;
    $i ++;
  var_dump($i);
  }
}

//
$obj = new foo();
$obj->hoge();
$obj->hoge();
$obj->hoge();

[gallu@localhost ~]$ php ttt.php
int(1)
int(2)
int(3)

これもガッテン承知の助。


で、確認したいのは、以下。

<?php
class foo {
  function hoge() {
    static $i = 0;
    $i ++;
  var_dump($i);
  }
}

//
$obj = new foo();
$obj->hoge();
$obj->hoge();

$obj2 = new foo();
$obj2->hoge();
$obj2->hoge();

[gallu@localhost ~]$ php ttt.php
int(1)
int(2)
int(3)
int(4)

あぁ、繋がるのか。


ふむ…念のために確認。

<?php
class foo {
  function hoge() {
    static $i = 0;
    $i ++;
  var_dump($i);
  }
}

class bar extends foo {
}

//
$obj = new foo();
$obj->hoge();
$obj->hoge();
//
$obj2 = new bar();
$obj2->hoge();
$obj2->hoge();

[gallu@localhost ~]$ php ttt.php
int(1)
int(2)
int(1)
int(2)

あ、はがれた。
内部的に「[クラス名+]関数名」でテーブルかなんか持ってる感じなのかな?


まぁいいや。とりあえず、いくつか「メモリ&DBアクセス的にチューニングしたい」項目があったんだけど、使えそうなので。