.Water-Sunlight
.サイトメニュー
.検索
.オンライン状況
登録ユーザ: 0
ゲスト: 10
.
<< Prev
globalキーワード
« INDEX »
PHP 文法編
Next >>
定数
作成日:2006/05/10

1E.8.5 staticキーワード

 PHPではC言語に似た静的(static)変数を作る事ができます。 staticキーワードは関数内のローカル変数でのみ使用できます。 PHPにはファイルレベルのスコープが存在しないので、C言語のようなファイルスコープを持つ静的変数は作れません。 また、グローバル変数は本来静的なので、プログラムの冒頭で初期化すれば十分です。

用例:
echo Counter(); // 1を出力
echo Counter(); // 2を出力
echo Counter(); // 3を出力

function Counter() {
  static $a = 0;
  return ++$a;
}

 static変数を使用する上でのいくつかの注意点があります。 変数の初期値と許されているのはリテラル定数だけです。上の用例では、

static $a=0;
の部分です。以下は記述はエラーになります。
static $a=1+2;     // NG
static $a=sqrt(1); // NG

また、リファレンスを保存する事ができません:

class boo_class{};

$boo = boo(true);
print_r($boo);  // 'boo_class Object()'を出力します($booはオブジェクトです)

$boo = boo(false);
print_r($boo);  // なにも出力しません($booはオブジェクトではありません)

function &boo($sw){
  static $obj;
  if ($sw) $obj =& new boo_class;
  return $obj;
}
※なぜ、リファレンスを保存する事ができないのでしょうか?
この理由については不明です。PHPの実装について詳しい方の助言を求めます。
<< Prev
globalキーワード
« INDEX »>
Page Top
Next >>
定数

.