如何检查方法调用是否使用有效的类常量

时间:2016-11-04 09:13:08

标签: php oop

我有一个类,其中一个方法接受一个参数,该参数应该是特定范围的选项之一。我已将这些选项定义为类中的常量。如何使用不是这些常量之一的值来阻止调用方法?

有些代码可能会让我更清楚我想要实现的目标:

<?php
class Foo
{
    const OPTION_A = 'a valid constant';
    const OPTION_B = 'another valid constant';

    public function go( $option )
    {
        echo 'You chose: ' . $option;
    }
}

$myFoo = new Foo();
$myFoo->go( Foo::OPTION_A ); // ok
$myFoo->go( Foo::OPTION_B ); // ok
$myFoo->go( 'An invalid value' ); // bad - string, not one of the class constants
$myFoo->go( Bar::OPTION_A ); // bad - constant is not local to this class

1 个答案:

答案 0 :(得分:1)

使用ReflectionClass的getConstants()方法:

public function go($option)
{
    $r = new \ReflectionClass($class);
    if (in_array($option, $r->getConstants()) {
        echo 'You chose: ' . $option;
    } else {
        echo 'urgh';
    }

}