static
キーワードがジェネレータ関数内で機能しないようですか? PHP 5.5では :PHPジェネレータ関数内で静的キーワードが機能しない
function static_fn() {
static $p = 0;
echo "\nstatic_fn: p = " . $p . "\n" ;
$p++;
}
echo "calling static_fn()\n";
static_fn();
echo "calling static_fn()\n";
static_fn();
function static_gen() {
static $p = 0;
echo "\nstatic_gen: p = " . $p . "\n" ;
yield $p;
}
echo "calling static_gen()\n";
foreach(static_gen() as $stuff) {
echo $stuff . "\n";
}
echo "calling static_gen()\n";
foreach(static_gen() as $stuff) {
echo $stuff . "\n";
}
私は、static
キーワードが連続呼び出しから0と1を返しstatic_fn
機能のために成功裏に働いているが、それはのために働かなかった結果
calling static_fn()
static_fn: p = 0
calling static_fn()
static_fn: p = 1
calling static_gen()
static_gen: p = 0
0
calling static_gen()
static_gen: p = 0
0
を取得static_gen
関数では、各呼び出しで0に再初期化されました。
これはなぜそうであり、ジェネレータの静的変数を複製するためにそれを回避する方法を知っていますか?
'static $ p'は関数ごとにユニークですので、覚えておいてください! – JustOnUnderMillions
グローバル変数を使うか、関数をクラス –
にラップして '各呼び出しで0に再初期化されましたが、' static_gen'の中で変数を使って何もしないでください!あなたは何を期待していますか? – JustOnUnderMillions