Es scheint, dass das Schlüsselwort static
nicht in Generatorfunktionen funktioniert? In PHP 5.5:Statisches Schlüsselwort funktioniert nicht in PHP-Generatorfunktion
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";
}
ich das Ergebnis
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
Das heißt, das static
Schlüsselwort erfolgreich für die static_fn
Funktion gearbeitet, die von aufeinanderfolgenden Anrufen 0 und 1 zurück, aber es hat nicht funktioniert für die static_gen
Funktion, wo es bei jedem Aufruf auf 0 neu initialisiert wurde.
Weiß jemand, warum das so ist, und wie man es umgehen könnte, um statische Variablen in einem Generator zu replizieren?
'static $ p' ist einzigartig für jede Funktion, behalte das im Hinterkopf! – JustOnUnderMillions
verwenden Sie besser globale var oder wickeln Sie Ihre Funktionen in Klasse –
', wo es bei jedem Aufruf neu initialisiert wurde auf 0, aber Sie haben auch nichts mit der Variablen innerhalb' static_gen' getan! Was erwartest du? – JustOnUnderMillions