2010-04-25 121 views
1

我想找到通過擴充傳遞給函數的令牌名稱。用反射API獲取令牌名稱

class Norm 
{ 
    const STR_NORM = 0; 
    const INT_NORM = 0; 
} 

function foo($Arg1, $Arg2 = NULL) 
{ 
    getConstName($Arg1); # Should Return STR_NORM; 
    return $Arg1, $Arg2; 
} 

echo foo(Norm::STR_NORM); 

有什麼辦法通過PHP Reflection API來實現getConstName嗎?

回答

2

不,因爲在foo()內,$Arg的值只是整數0.它無法知道這個值來自const。

例如,下面的例子應該輸出什麼?

class Norm 
{ 
    const STR_NORM = 0; 
    const INT_NORM = 2; 
} 

echo foo(Norm::STR_NORM+2); 
echo foo(Norm::INT_NORM); 

如果這兩個回波都輸出INT_NORM

+0

好點。我必須考慮他們的問題。 – 2010-04-25 17:47:33

+0

我認爲通常的解決方案是將每個常量設置爲不同的值。 – 2010-04-25 18:34:41