我有一个类,其中一个方法接受一个参数,该参数应该是特定范围的选项之一。我已将这些选项定义为类中的常量。如何使用不是这些常量之一的值来阻止调用方法?
有些代码可能会让我更清楚我想要实现的目标:
<?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
答案 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';
}
}