このコードは、私はなぜ理解していない解析エラーをスローします。PHPで静的に動作が奇妙に、関数を受け入れることができません
function t(){
return 'g';
}
function l(){
static $b = t();
return $b;
}
l();
質問は、なぜですか?
このコードは、私はなぜ理解していない解析エラーをスローします。PHPで静的に動作が奇妙に、関数を受け入れることができません
function t(){
return 'g';
}
function l(){
static $b = t();
return $b;
}
l();
質問は、なぜですか?
static
変数の値はソース解析ステップで入力されるため、定数でない値を含むことはできません。
次のようなもので値の初期化を実現することができます。
マニュアルから引用function l(){
static $b;
if (!$b) $b = t();
return $b;
}
:
注:
は、これらの[静的]変数に値を代入しようとし式の結果が のの場合、解析エラーが発生します。
(私の強調)
C.F. http://www.php.net/manual/en/language.variables.scope.php例#7
静的な$ bを宣言しておくと、 $ b = t(); '' l() 'は期待どおりに 'g'を正しく返します。 – cspray