phpのメンバーvariablesは、宣言と同時に初期化できますが、スカラーでのみ初期化できます。
class A { public $f1 = 'xxxx'; static public $f2 = 100; }
変数をオブジェクトに割り当てたい場合、変数はコンストラクターでのみ初期化できます。例:
class A { private $child; public function construct() { $this->child = new B(); } }
しかし、phpにはstaticconstructはありません。 Java の
static
device/static ブロックと同様に、初期化する適切なタイミングがありません。
class A { static public $child; } A::$child = new B();
class A {
static private $child;
static public initialize() {
self::$child = new B();
}
}
A::initialize();
ドメインにのみ存在し、プログラムの実行がこのスコープを離れるときに一度だけ初期化され、その値は消えず、最後の実行の結果が使用されます。
次の例を見てください:
<?php function Test() { $w3sky = 0; echo $w3sky; $w3sky++; } ?>
次のように:
<?php function Test() { static $w3sky = 0; echo $w3sky; $w3sky++; } ?>
静的変数と再帰関数の例: <?PHP
function Test()
{
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test();
}
$count--;
}
?>
expression
<?PHP function foo(){ static $int = 0;// correct static $int = 1+2; // wrong (as it is an expression) static $int = sqrt(121); // wrong (as it is an expression too) $int++; echo $int; } ?>
以上がPHPの静的変数に関する質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。