views:

19

answers:

1

I want to find the token's name passed by augment into a function.

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);

Is there any way to implement getConstName via the PHP Reflection API?

+2  A: 

No, because inside foo(), the value of $Arg is just the integer 0. It has no way of knowing that this value came from a const.

For example, what should be output by the following example?

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

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

Should both of these echoes output INT_NORM?

Bill Karwin
Good Point. I'll have to have a think about my problem them.
Mark Tomlin
I think the usual solution is to make each const a distinct value.
Bill Karwin