我正在圍繞「static ::」關鍵字處理一些PHP,並遇到太多靜態調用導致混淆方法所在的問題。它更容易通過例子來說明:PHP中可能出現的PHP錯誤::在PHP 5.3.3中
class Class1
{
function Test()
{
return Class2::Test();
}
}
class Class2
{
function Test()
{
return static::Test2();
}
function Test2()
{
return true;
}
}
/* test 1: calling Class1::Test() statically results in expected call to Class2::Test2() */
echo "test 1: " . Class1::Test() . "\n";
/* test 2: instantiating the class causes Class1::Test2() to be called, which does not exist */
$Class1 = new Class1();
echo "test 2: " . $Class1->Test() . "\n";
我想伸手去讓PHP的專家誰可以告訴我是否這可能是一個真正的錯誤或語言的簡單濫用的意見。
我意識到所有的靜態調用都可能是奇怪的,但它代表了我遇到的實際代碼。
請讓我知道是否需要更多的信息或澄清。感謝您提前提供任何幫助!
您使用的是哪個版本的PHP?靜態關鍵字沒有擴展到5.3 – 2011-06-01 19:26:49
我想他是問,這是否真的是一個關於static關鍵字的錯誤,以及整個晚期靜態綁定事件是如何「假設」工作的。 – LLBBL 2011-06-01 19:28:47
我忘了提及,運行5.3.3 – 2011-06-01 19:31:40