PHPの__callStatic()
に関する簡単な質問。PHP __callStatic&無効なメソッド名の文字
class Test{
public static function __callStatic($method, $arguments){
echo $method . PHP_EOL;
}
public function __call($method, $arguments){
echo $method . PHP_EOL;
}
}
$test = new Test();
$test->foo();
$test->{'hello-world'}();
Test::bar();
Test::{'goodbye-universe'}();
予想される出力:
foo
hello-world
bar
goodbye-universe
実際の出力:
foo
hello-world
bar
PHP Parse error: syntax error, unexpected '{', expecting T_STRING or T_VARIABLE or '$' in - on line 18
はこの構文が許可されていない、また__callStatic()
で達成可能な機能?
注:なし一時変数。次は動作します:
$goodbyeUniverse = 'goodbye-universe';
Test::$goodbyeUniverse();
しかし、私はそれを避けようとしています。
ありがとう@Stefan Gehrig - これは私が残念なことに考え始めたことです。私はたくさんの異なる文字列解析のテクニックを試しましたが、それはすべて予期しないブレース '{'に戻ってきます。スコープ内のインスタンスを使わずに '__call()'を使ってこの機能を実装するには、シングルトンに頼らざるを得ないので、これは非常に残念です。 – Dan