有關__callStatic()
在PHP中的快速問題;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--這就是我開始想的,不幸的是。我已經嘗試了大量不同的字符串解析技巧,但是這一切都回到了一個意想不到的括號'{'PHP不喜歡。這非常不幸,因爲現在我不得不求助於singleton來實現這個功能,而不需要通過'__call()'來實現這個功能。 – Dan