2010-04-25 91 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